如何在 Unity 中以编程方式控制游戏中游戏对象在场景中的位置



我在 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

最新更新