![](/img/trans.png)
[英]How to reference the int variable to another script which is in another GameObject in Unity?
[英]Reference script class to GameObject in Unity
我有一个建筑物的类,我想将其连接到建筑物的游戏对象。 在该类中,我具有以下属性:名称,级别,信息。 我拥有建筑物的资产(如农场,城堡,港口之类的东西)。 我有一个Game类,在其中创建对象。 游戏类用于存储对象,因此可以在整个游戏中调用它们,从而可以像这样将游戏保存为负载。
通过谷歌搜索无法真正找到想要的东西,我也很难描述我的意思。
建筑类:
[System.Serializable]
public class BuildingObject
{
public string name;
public int level;
public string information;
public BuildingObject(string information)
{
this.name = "";
this.level = 0;
this.information = information;
}
}
这是我创建对象的Game类。 我希望在GameObject内引用创建的对象,因此我可以通过在其他文件中使用它们并保持某些gameObject级别的进度来调用某些gameObjects的属性。
public static Game current;
public BuildingObject church;
public BuildingObject castle;
public BuildingObject fort;
public BuildingObject farm;
public BuildingObject pub;
public BuildingObject houses;
public PlayerObject player;
public StoryObject story;
public Game()
{
church = new BuildingObject("Informatie over de kerk");
castle = new BuildingObject("Informatie over het kasteel");
fort = new BuildingObject("Informatie over het fort");
farm = new BuildingObject("Informatie over de boerderij");
pub = new BuildingObject("Informatie over de kroeg");
houses = new BuildingObject("Informatie over de huizen");
player = new PlayerObject();
story = new StoryObject();
}
我想根据GameObjects连接/引用Game对象内创建的对象。 如果我在层次结构中创建了一个城堡GameObject,那么我希望在GameObject内拥有城堡Object的属性。 如果有另一种更好或更简单的方法,请让我知道,我是团结的新手。
据我了解,您需要从MonoBehavior继承建筑对象:
public class BuildingObject : MonoBehavior
然后创建一个空的游戏对象(预制),并将此BuildingObject组件添加到其中。 然后,您可以向场景中添加尽可能多的建筑物(带有BuildingObject组件的那些预制件)并配置其参数。
如果我理解正确,那么Game类就是场景中某些GameObject的组件。 因此,您可以将这些建筑物(场景中的GameObjects)拖放到Game类中的变量(对BuildingObject的引用)中,而不用在代码中创建这些BuildingObjects。
如果需要在Game类(或其他任何类)中动态创建新建筑物,则需要在该类中创建对BuildingObject预制件的引用(并将建筑物预制件拖放到Game类中的该引用):
public BuildingObject buildingPrefab;
然后,您将可以在Game类中动态创建更多新建筑物(带有建筑物组件(脚本)的GameObjects),如下所示:
BuildingObject newBuilding = Instantiate(buildingPrefab);
它将把新建筑物作为新的GameObject添加到场景中。 然后对这些建筑物做任何您想做的事情:)
您应该使用ScriptableObjects
而不是预制件。
ScriptableObjects是由Unity序列化的资产,可以在播放模式下进行编辑并部署到构建中。
它们提供了MonoBehaviour的所有优点,但是它们没有任何更新流程(Update,FixedUpdate,LateUpdate和任何实时GamePlay方法),也不必在场景中实例化为GameObject。
cf: https : //docs.unity3d.com/Manual/class-ScriptableObject.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.