我有一个复杂的问题。这是我的一些代码,它是一个游戏磁贴类。
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 =
答案 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
创建的本地副本不会自动传播到类)。