我有一个建筑物的类,我想将其连接到建筑物的游戏对象。在该类中,我具有以下属性:名称,级别,信息。我拥有建筑物的资产(如农场,城堡,港口之类的东西)。我有一个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并保持某些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的属性。如果有另一种更好或更简单的方法,请告诉我,我是团结的新手。
答案 0 :(得分:2)
您可以存储要在层次结构中创建的gameObjects
的模板。您需要将脚本附加为Component
,可以通过调用GameObject.GetComponent<BuildingObject>()
答案 1 :(得分:0)
据我了解,您需要从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添加到场景中。然后对这些建筑物做任何您想做的事情:)
答案 2 :(得分:0)
您应该使用ScriptableObjects
而不是预制件。
ScriptableObject是由Unity序列化的资产,可以在播放模式下进行编辑并部署到构建中。
它们提供了MonoBehaviour的所有优点,但是它们没有任何更新流程(Update,FixedUpdate,LateUpdate和任何实时GamePlay方法),也不必在场景中实例化为GameObject。
>cf:https://docs.unity3d.com/Manual/class-ScriptableObject.html