我在 Unity 中创建了一个代码文件,并将其分配给我放置在场景中的空GameObject
:
var obj = new GameObject("Sample");
obj.transform.position = new Vector3(0, 0, 0);
var text = obj.AddComponent<TextMesh>();
text.text = "Hello world";
当我运行场景时,我可以看到文本。这就是我的问题:我没有在代码中指定任何位置来向场景添加obj
,但它显然会自动放置。 如果我想在实例化时间之后引入对象,这可能是一个问题。
我做错了什么?如何实现这一点?这里的模式/最佳实践是什么?
立即修复:
使用obj.SetActive(false)
暂时禁用对象,然后在需要对象处于活动状态时使用obj.SetActive(true)
。
其他解决方案/最佳实践:
在场景中创建所需的对象,将其另存为预制件(预制对象(,然后仅在需要时对其进行实例化。这是进一步阅读预制系统的链接。https://docs.unity3d.com/Manual/Prefabs.html
对象池通常在您将拥有一堆相同的对象(如激光、子弹等(时使用。观看此视频可能会有所帮助: https://www.youtube.com/watch?v=tdSmKaJvCoA