PROBLEMA AO INSTANCIAR PREFABS
4 participantes
Página 1 de 1
PROBLEMA AO INSTANCIAR PREFABS
Olá no meu projeto eu tenho um objeto com alguns scripts e ao instancia - lo em outra cena o script fica nulo, e a camera secundaria da cena fica renderizando primeiro, queria saber se tem algum esquema pra salvar os dados do objeto, pra quando for pra outra cena se manter ativo,
OBS: Eu to usando o SceneManagement.
OBS: Eu to usando o SceneManagement.
viny123- Iniciante
- PONTOS : 3605
REPUTAÇÃO : 0
Respeito as regras :
Re: PROBLEMA AO INSTANCIAR PREFABS
DontDestroyOnLoad(gameObject);viny123 escreveu:Olá no meu projeto eu tenho um objeto com alguns scripts e ao instancia - lo em outra cena o script fica nulo, e a camera secundaria da cena fica renderizando primeiro, queria saber se tem algum esquema pra salvar os dados do objeto, pra quando for pra outra cena se manter ativo,
OBS: Eu to usando o SceneManagement.
^ Coloque esta simples linha de código no script do seu objeto e ele não vai sumir ao mudar de cena :D
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: PROBLEMA AO INSTANCIAR PREFABS
ja tem no script , mesmo assim o objeto é instanciado e o script fica desativado!
viny123- Iniciante
- PONTOS : 3605
REPUTAÇÃO : 0
Respeito as regras :
Re: PROBLEMA AO INSTANCIAR PREFABS
- Código:
Esse é o script que fica nulo quando o objeto que tem ele é instanciado na cena
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.Vehicles.Car; //Caso de algum error essa linha e do Script da Unity
public class Editar : MonoBehaviour {
public GameObject[] Roda1, Roda2, Roda3, Roda4; //Aqui é as rodas
//Canvas//
public GameObject _canvasOficina, _pivoOficina, _cameraOF; //Aqui é os canvas, camera, e o pivo da Oficina (Atenção nos Nomes)
//Pintura//
public Button _buttonPintar, _buttonOficina, _buttonSair, _buttonEsquerda, _buttonDireita; //Aqui é os Buttons basta linkar os que esta pedindo que ele faz as açoes
public Color[] cores; //Aqui e suas cores
public Material materialDoObjeto; //Aqui voce linka o Material do seu veiculo
int Indice, Atual;
void Awake(){
_pivoOficina = GameObject.Find ("Oficina"); //Linka a Pivo da oficina automaticamente
_cameraOF = GameObject.Find ("CameraOF"); //Linka a camera da Oficina automaticamente
if (_pivoOficina == null) { //Verifica se o pivo e nulo
GetComponent<Editar> ().enabled = false;
_buttonOficina.gameObject.SetActive (false);
_canvasOficina.gameObject.SetActive (false);
}
}
void Start () {
Oficinas (false);
//Setar Botoes//
_buttonSair.onClick = new Button.ButtonClickedEvent();
_buttonPintar.onClick = new Button.ButtonClickedEvent();
_buttonOficina.onClick = new Button.ButtonClickedEvent();
_buttonEsquerda.onClick = new Button.ButtonClickedEvent();
_buttonDireita.onClick = new Button.ButtonClickedEvent();
_buttonEsquerda.onClick.AddListener(() => Esquerda());
_buttonDireita.onClick.AddListener(() => Direita());
_buttonOficina.onClick.AddListener(() => Oficinas(true));
_buttonPintar.onClick.AddListener(() => Colorir());
_buttonSair.onClick.AddListener(() => Oficinas(false));
}
void Update(){
if (Vector3.Distance (transform.position, _pivoOficina.transform.position) <= 4) { //Verifica a distancia para a tivar e desativar o Button da Oficina
_buttonOficina.gameObject.SetActive (true);
} else {
_buttonOficina.gameObject.SetActive (false);
}
if (Atual < Roda1.Length -1) {
_buttonDireita.gameObject.SetActive (true);
} else {
_buttonDireita.gameObject.SetActive (false);
}
if (Atual > 0) {
_buttonEsquerda.gameObject.SetActive (true);
} else {
_buttonEsquerda.gameObject.SetActive (false);
}
}
private void Direita(){//Faz açao de trocar a roda para direita
Roda1 [Atual].SetActive (false);
Roda2 [Atual].SetActive (false);
Roda3 [Atual].SetActive (false);
Roda4 [Atual].SetActive (false);
Atual++;
Roda1 [Atual].SetActive (true);
Roda2 [Atual].SetActive (true);
Roda3 [Atual].SetActive (true);
Roda4 [Atual].SetActive (true);
}
private void Esquerda(){//Faz açao de trocar a roda para esquerda
Roda1 [Atual].SetActive (false);
Roda2 [Atual].SetActive (false);
Roda3 [Atual].SetActive (false);
Roda4 [Atual].SetActive (false);
Atual--;
Roda1 [Atual].SetActive (true);
Roda2 [Atual].SetActive (true);
Roda3 [Atual].SetActive (true);
Roda4 [Atual].SetActive (true);
}
private void Oficinas(bool OP){//Ativa e desativa os Button
_canvasOficina.gameObject.SetActive (OP);
_buttonPintar.gameObject.SetActive (OP);
_buttonSair.gameObject.SetActive (OP);
_cameraOF.gameObject.SetActive (OP);
//GetComponent<CarController> ().freiodMao = (OP);
//
http://_canvasVelo.gameObject.SetActive (!OP);
}
public void Colorir(){//Aqui altera a cor
if(Indice < cores.Length){
materialDoObjeto.SetColor ("_Color", cores [Indice]);
Indice++;
}
else{
materialDoObjeto.SetColor ("_Color", cores [0]);
Indice = 1;
}
}
}
ESSE EU USO PRA SELECIONAR O PLAYER
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class PlayerSelect : MonoBehaviour {
public Transform pivo;
GameObject player;
int i;
public GameObject[] players;
public Button next, previous, select;
// Use this for initialization
void Start () {
i = 0;
next.onClick = new Button.ButtonClickedEvent ();
previous.onClick = new Button.ButtonClickedEvent ();
select.onClick = new Button.ButtonClickedEvent ();
next.onClick.AddListener (() => Next ());
previous.onClick.AddListener (() => Previous ());
select.onClick.AddListener (() => Select());
}
// Update is called once per frame
void Update () {
if (!player) {
player = GameObject.Find ("Player");
player = Instantiate (players [i], pivo.position,Quaternion.identity) as GameObject;
}
}
void Next (){
i++;
if (i >= players.Length){
i = 0;
}
Destroy (player);
}
void Previous ()
{
i--;
if (i < 0) {
i = players.Length - 1;
{
Destroy (player);
}
}
}
void Select(){
SceneManager.LoadScene("Config",LoadSceneMode.Single);
DontDestroyOnLoad(player);
player.transform.position = new Vector3(-5.19F,2.32F,31.74F);
}
}
viny123- Iniciante
- PONTOS : 3605
REPUTAÇÃO : 0
Respeito as regras :
Re: PROBLEMA AO INSTANCIAR PREFABS
Coloque sempre os seus scripts na caixa script do forum para melhor organização
Coloque o DontDestroyOnLoad na void Awake do seu script e veja se funciona
- Código:
//here
Coloque o DontDestroyOnLoad na void Awake do seu script e veja se funciona
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: PROBLEMA AO INSTANCIAR PREFABS
Resolvi o problema e estou com outro hehe!
Os game objects que é p ser linkado automaticamente só funciona pra objetos já em cena, quando eu instancio um objeto pra cena ele nao linka automaticamente, existe algum metodo pra que isso se resolva?
Os game objects que é p ser linkado automaticamente só funciona pra objetos já em cena, quando eu instancio um objeto pra cena ele nao linka automaticamente, existe algum metodo pra que isso se resolva?
viny123- Iniciante
- PONTOS : 3605
REPUTAÇÃO : 0
Respeito as regras :
Re: PROBLEMA AO INSTANCIAR PREFABS
boa tarde, acho q se vc criar um array para linkar automaticamente vc poderia busca os objetos instanciados pela tag na update a cada frame e add no array fiz ate um exemplo so com butao key,
- Código:
public GameObject[] objs; //Array a cada prefab instanciada pela tag aumentara o valor aki
public GameObject inst; //o objeto a ser instanciado, pego na pasta assets
// Use this for initialization
// Update is called once per frame
void Update()
{
objs = GameObject.FindGameObjectsWithTag("obj");//caso instanciar um novo ira pegar
mais um no array
for(int i=0; i<objs.Length; i++) //obtendo a lista de objeto no array
{
Debug.Log(objs[i].name);
}
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(inst, transform.position * 2,transform.rotation); //o obj a ser
instanciado,a pos ea rotaçao.
}
}
}
Tópicos semelhantes
» Link Prefabs??
» AJUDA NOS PREFABS
» Pegar o Collision de prefabs
» Array de prefabs
» Combinar prefabs?!?
» AJUDA NOS PREFABS
» Pegar o Collision de prefabs
» Array de prefabs
» Combinar prefabs?!?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos