void UseStructVersusClass() { PlayerDataStruct playerStruct = new PlayerDataStruct(); PlayerDataClass playerClass = new PlayerDataClass(); playerStruct.HitPoints = 1; playerClass.HitPoints = 1; PlayerDataStruct otherPlayerStruct = playerStruct; otherPlayerStruct.HitPoints = 3; // change the copied data Debug.Log(playerStruct.HitPoints + " and " + otherPlayerStruct.HitPoints); // 1 and 3 PlayerDataClass otherPlayerClass = playerClass; otherPlayerClass.HitPoints = 3; // change the copied data, or did we? Debug.Log(playerClass.HitPoints + " and " + otherPlayerClass.HitPoints); // 3 and 3 PlayerDataClass anotherPlayerClass = new PlayerDataClass(); anotherPlayerClass.HitPoints = playerClass.HitPoints; anotherPlayerClass.HitPoints = 7; Debug.Log(playerClass.HitPoints + ":" + otherPlayerClass.HitPoints + ":" + anotherPlayerClass.HitPoints); // 3:3:7 }
void Start() { { /* * Section 6.8.2 Structs versus Classes */ PlayerDataStruct playerStruct = new PlayerDataStruct(); PlayerDataClass playerClass = new PlayerDataClass(); playerStruct.HitPoints = 1; playerClass.HitPoints = 1; PlayerDataStruct otherPlayerStruct = playerStruct; otherPlayerStruct.HitPoints = 3; // change the copied data Debug.Log(playerStruct.HitPoints + " and " + otherPlayerStruct.HitPoints); // 1 and 3 PlayerDataClass otherPlayerClass = playerClass; otherPlayerClass.HitPoints = 3; // change the copied data, or did we? Debug.Log(playerClass.HitPoints + " and " + otherPlayerClass.HitPoints); // 3 and 3 PlayerDataClass anotherPlayerClass = new PlayerDataClass(); anotherPlayerClass.HitPoints = playerClass.HitPoints; anotherPlayerClass.HitPoints = 7; Debug.Log(playerClass.HitPoints + ":" + otherPlayerClass.HitPoints + ":" + anotherPlayerClass.HitPoints); // 3:3:7 } { /* * Section 6.8.3 Without Structs? */ object[] playerDataArray = new object[5] { new Vector3(), // Position 10, // HitPoints 13, // Ammunition 6.5f, // Run Speed 1.2f // Walk Speed }; object[] copyOfPlayerDataArray = playerDataArray; Debug.Log(playerDataArray[1]); // 10 copyOfPlayerDataArray[1] = 1; Debug.Log(playerDataArray[1] + ":" + copyOfPlayerDataArray[1]); // 1:1 } StartCube(); }