[RESOLVIDO] Referência nula em variável Int
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Referência nula em variável Int
Estou tendo um problema de referência nula numa variável int,
Basicamente eu criei algumas classes (fora do MonoBehaviour) para configurar alguns itens:
E em um script MonoBehaviour normal, eu utilizo dessas classes para definir seus valores:
O script funciona normalmente quando o objeto está selecionado no Editor, no entanto, quando ele não está selecionado ou não estou rodando no editor, ele para de funcionar, me retornando a seguinte mensagem:
Alguém pode me dizer porque isso tá acontecendo? E como resolver?
Basicamente eu criei algumas classes (fora do MonoBehaviour) para configurar alguns itens:
- Código:
[System.Serializable]
public class _ObjectItem
{
public Renderer model;
public int price;
public bool Buyed;
}
[System.Serializable]
public class _TextureItem
{
public Renderer model;
public Texture tex;
public int MaterialIndex;
public int price;
public bool Buyed;
}
[System.Serializable]
public class _OutFit
{
public int CurrentHair;
public int CurrentEyes;
public int CurrentGlasses;
public int CurrentBread;
[Space]
public int CurrentJacket;
public int CurrentTShirt;
public int CurrentLegs;
public int CurrentShoes;
public Color HairColor = new Color(1,1,1,1);
[SerializeField]
public _ObjectItem Hair;
public Color EyesColor = new Color(1, 1, 1, 1);
[SerializeField]
public _TextureItem Eyes;
public Color GlassesColor = new Color(1, 1, 1, 1);
[SerializeField]
public _TextureItem Glasses;
public Color BreadColor = new Color(1, 1, 1, 1);
[SerializeField]
public _TextureItem Bread;
public Color JacketColor = new Color(1, 1, 1, 1);
[SerializeField]
public _TextureItem Jacket;
public Color TShirtColor = new Color(1, 1, 1, 1);
[SerializeField]
public _TextureItem TShirt;
public Color LegsColor = new Color(1, 1, 1, 1);
[SerializeField]
public _TextureItem Legs;
public Color ShoesColor = new Color(1, 1, 1, 1);
[SerializeField]
public _TextureItem Shoes;
}
[System.Serializable]
public class _Wardrobe
{
[SerializeField]
public _OutFit Outfit;
[SerializeField]
public _ObjectItem[] Hair;
[SerializeField]
public _TextureItem[] Eyes;
[SerializeField]
public _TextureItem[] Glasses;
[SerializeField]
public _TextureItem[] Bread;
[SerializeField]
public _TextureItem[] Jacket;
[SerializeField]
public _TextureItem[] TShirt;
[SerializeField]
public _TextureItem[] Legs;
[SerializeField]
public _TextureItem[] Shoes;
}
E em um script MonoBehaviour normal, eu utilizo dessas classes para definir seus valores:
- Código:
[SerializeField]
public _Wardrobe Outfits;
[SerializeField]
public _OutFit PreviewOutFit;
public void PreviewHair(int item)
{
PreviewOutFit.CurrentHair = (int)Mathf.Repeat(PreviewOutFit.CurrentHair + item,
Outfits.Hair.Length);
PreviewOutfit();
}
O script funciona normalmente quando o objeto está selecionado no Editor, no entanto, quando ele não está selecionado ou não estou rodando no editor, ele para de funcionar, me retornando a seguinte mensagem:
- Código:
NullReferenceException: Object reference not set to an instance of an object
PlayerStatus.PreviewHair (System.Int32 item) (at Assets/Systems/Status/PlayerStatus.cs:80)
SetupPlayer.PreviewHair (System.Int32 item) (at Assets/Systems/Multiplayer/SetupPlayer.cs:196)
Alguém pode me dizer porque isso tá acontecendo? E como resolver?
Re: [RESOLVIDO] Referência nula em variável Int
A engine não sem a partir de qual versão, sempre está exibindo um alerta para as variáveis vazias, no seu caso, todos são vazias, primeiro coloque valor a elas, mesmo que seja apenas = default;
Exemplo:
[list=linenums]
[*]public Renderer model = default;
[*] public int price = default;
[*] public bool Buyed = default;
[/list]
Para os arrays, a mesma coisa
public _TextureItem[] Glasses = default;
Não sei o que a sua classe SetupPlayer está fazendo na linha 196, coloca ela também.
Exemplo:
[list=linenums]
[*]public Renderer model = default;
[*] public int price = default;
[*] public bool Buyed = default;
[/list]
Para os arrays, a mesma coisa
public _TextureItem[] Glasses = default;
Não sei o que a sua classe SetupPlayer está fazendo na linha 196, coloca ela também.
Re: [RESOLVIDO] Referência nula em variável Int
Muito obrigado!guimaraf escreveu:A engine não sem a partir de qual versão, sempre está exibindo um alerta para as variáveis vazias, no seu caso, todos são vazias, primeiro coloque valor a elas, mesmo que seja apenas = default;
Exemplo:
[list=linenums]
[*]public Renderer model = default;
[*] public int price = default;
[*] public bool Buyed = default;
[/list]
Para os arrays, a mesma coisa
public _TextureItem[] Glasses = default;
Não sei o que a sua classe SetupPlayer está fazendo na linha 196, coloca ela também.
Eu n entendi mto bem oq aconteceu, pois o script estava a funcionar corretamente.
Mas eu recarreguei uma versão backup dele, e até o momento não tive problemas... Acredito que esse erro estava relacionado ao Photon, pois o script não é MonoBehaviour
Tópicos semelhantes
» [RESOLVIDO] Variável de tecla
» [RESOLVIDO] Vector3 em uma variável
» [RESOLVIDO] Problema com Varíavel Estática
» [RESOLVIDO]Variável global ou Get em cada script?
» [RESOLVIDO] como setar uma variável Int através do MouseScroll?
» [RESOLVIDO] Vector3 em uma variável
» [RESOLVIDO] Problema com Varíavel Estática
» [RESOLVIDO]Variável global ou Get em cada script?
» [RESOLVIDO] como setar uma variável Int através do MouseScroll?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos