I’m trying to add an object Card in a list Cards of an object Player, however, it returns an error :
NullReferenceException: Object reference not set to an instance of an object
RoundManager.DistributionsCartes () (at Assets/RoundManager.cs:161)
RoundManager.SetBet () (at Assets/RoundManager.cs:133)
UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:137)
UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:601)
UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:743)
UnityEngine.Events.UnityEvent`1[T0].Invoke (.T0 arg0) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_1.cs:53)
UnityEngine.UI.InputField.SendOnSubmit () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/InputField.cs:1334)
UnityEngine.UI.InputField.DeactivateInputField () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/InputField.cs:2011)
UnityEngine.UI.InputField.OnDeselect (UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/InputField.cs:2021)
UnityEngine.EventSystems.ExecuteEvents.Execute (IDeselectHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:115)
UnityEngine.EventSystems.ExecuteEvents.Execute[IDeselectHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:269)
UnityEngine.EventSystems.EventSystem:Update()
Here is an extract of the code :
public class Card
{
public int Suit { get; set; }
public int Rank { get; set; }
public Card(int suit, int rank)
{
Suit = suit;
Rank = rank;
}
}
public class Player
{
public string Name {get; set;}
public bool Human { get; set; }
public int InitialMoney {get; set;}
public bool MoneyToPlay {get;set;}
public int Money {get; set;}
public int InitialBet { get; set; }
public bool Croupier { get; set; }
public List<Card> Cards { get; set; }
public Player(string name, bool human, bool croupier, int initialMoney)
{
Name = name;
Human = human;
Croupier = croupier;
InitialMoney = initialMoney;
Money = initialMoney;
}
}
public class RoundManager : MonoBehaviour
{
List<Player> players = new List<Player>();
public void Start()
{
Player player1 = new Player("Player 1 IA" ,false, false, Random.Range(800, 1200));
Player player2 = new Player("Player 2 IA" ,false, false, Random.Range(100, 2000));
Player player3 = new Player("Player 3 IA" ,false, false, Random.Range(100, 550));
Player player4 = new Player("Player 4 J" ,true, false, Random.Range(900, 1100));
players.Add(player1);
players.Add(player2);
players.Add(player3);
players.Add(player4);
DistributionsCartes();
Card TirageCarte()
{
Card card = new Card(Random.Range(1, 5), Random.Range(1, 14));
return card;
}
void DistributionsCartes()
{
foreach (Player Pl in players)
{
Debug.Log (Pl.Name);
Pl.Cards.Add (TirageCarte());
}
}
}
If this extract isn’t enough, here is the full version C# Unity problem - Pastebin.com
I’m using Unity v5.1.0f3, and I really don’t know why it doesn’t work