C# 如何从预设中获取场景中游戏对象的引用
目前,我正在开发一个设备系统,该系统将从列表中将游戏对象实例化到场景中,在此之前,我没有使用实例化系统,只是始终保持游戏对象在场景中处于活动状态 现在,在实例化游戏对象(预置)时,我遇到了在实例化它们时丢失引用的错误,我已经看过了前面的其他文章,比如这里的讨论: 然而,我正在寻找使用标签以外的其他方法,因为该系统可能会使用大量标签,从而降低游戏性能,是否有人知道将场景中的引用保存到预设中的不同方法 由于这是一个新的系统,我真的只是在寻找如何将场景游戏对象的引用保存到预制件中的建议,因为我的旧系统只是在场景中保持游戏对象的活动状态,而不是实际实例化它们,我想再次听到不同类型的方法,而不仅仅是使用标签 我试图保存的引用是来自附加到我的预置的脚本的三个转换元素,它们如下C# 如何从预设中获取场景中游戏对象的引用,c#,unity3d,instance,gameobject,C#,Unity3d,Instance,Gameobject,目前,我正在开发一个设备系统,该系统将从列表中将游戏对象实例化到场景中,在此之前,我没有使用实例化系统,只是始终保持游戏对象在场景中处于活动状态 现在,在实例化游戏对象(预置)时,我遇到了在实例化它们时丢失引用的错误,我已经看过了前面的其他文章,比如这里的讨论: 然而,我正在寻找使用标签以外的其他方法,因为该系统可能会使用大量标签,从而降低游戏性能,是否有人知道将场景中的引用保存到预设中的不同方法 由于这是一个新的系统,我真的只是在寻找如何将场景游戏对象的引用保存到预制件中的建议,因为我的旧系统
public-Transform-camPos;
公共场所;
公共场所;
目前,我只是将游戏对象从场景拖放到脚本中的公共字段中
由于这将是一个主要的系统,我不想使用这个系统的标签。但这绝对是一个有效的选择,我只是在寻找其他方法,在将预置实例化到场景中时,将场景游戏对象的引用保存到预置中
感谢您抽出时间阅读,如有任何建议,将不胜感激
有问题尽管问吧 由于明显的原因,您无法在预设中保存场景引用(如果将该预设实例化到另一个场景中会发生什么情况?)。预置需要在实例化后发现所需的对象。我不太喜欢Unity中的标记系统(或者任何其他使用字符串作为标识符的系统,错误空间太大)。我建议您采取以下三种方法之一:
camPos=camPos.Instance.transform代码>您可以阅读单例模式
camPos=transform.root.getComponentChildren().transform代码>更好的是,您可以拥有一个引用了所有此类对象的组件,并将其附加到根游戏对象。然后,您可以执行以下操作:camPos=transform.root.GetComponent().camPos代码>
var-weapon=Instantiate(myWeaponPrefab);武器。坎波斯=坎波斯代码>但是请注意,当您以这种方式分配公共字段时,只有在调用Start
后才能访问这些字段。换句话说,它们在Awake
中不可用
也就是说,我不认为把目标定位和十字线定位这样的东西分开是个好主意。您应该有一个player/human/pawn类,该类可以向其他需要它的对象提供此信息。预置不能包含场景引用(因为在调用
实例化时它们可能不存在)。第二,Instantiate
返回对派生实例的引用。