示例#1
0
        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
        }
示例#2
0
    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();
    }