Unity C#类在其他命名空间中抛出null

时间:2016-06-27 01:40:50

标签: c# oop unity3d

我有一个复杂的问题。这是我的一些代码,它是一个游戏磁贴类。

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;

namespace game_tiles {
    public class GameTile {

        public GameObject tilePrefab;
        public bool isPassable;
        public float moveCost;
    }

    public class GameTiles : MonoBehaviour {

        public GameTile redTile;
        public GameObject redTilePrefab;
        public bool redTileIsPassable;
        public float redTileMoveCost;

        public void Main() {

            GameTile redTile = new GameTile();
            redTile.tilePrefab = redTilePrefab;
            redTile.isPassable = redTileIsPassable;
            redTile.moveCost = redTileMoveCost;
            print(redTile);
        }
    }
}

当上面的代码运行时,它会打印到统一控制台:game_tiles.GameTile

完全正常,对吧?

但是,我想在不同的文件中使用代码,使用此代码:

using UnityEngine;
using System.Collections.Generic;
using game_tiles;

namespace board_manager {
    public class BoardManager : MonoBehaviour {

        GameTiles gameTiles;

        // Use this for initialization
        void Start() {

            gameTiles = GameObject.Find("Game Tile Class").GetComponent<GameTiles>();

            GameTile redTile = gameTiles.redTile;
            print(redTile);  
        }
    }
}

由于某些原因,此代码将Null打印到Unity控制台,因此,我无法使用redTile对象中的任何变量。如何让两个程序都打印game_tiles.GameTile?谢谢你的帮助。

P.S。对不起所有类似的gameTile变量。我想不出不同的名字。 d =

1 个答案:

答案 0 :(得分:2)

您在构造函数中定义了一个新变量,当您想要使用类级变量时,它看起来像:

catch (App\Http\Controllers\Exception $ex)

请注意,构造函数现在使用public class GameTiles : MonoBehaviour { public GameTile redTile; public GameObject redTilePrefab; public bool redTileIsPassable; public float redTileMoveCost; public void Main() { this.redTile = new GameTile(); this.redTile.tilePrefab = redTilePrefab; this.redTile.isPassable = redTileIsPassable; this.redTile.moveCost = redTileMoveCost; print(this.redTile); } } 。它不是必需的,但用于说明我们使用全局变量,而不是创建我们自己的(this创建的本地副本不会自动传播到类)。