【问题标题】:Right way to instantiate GameObject?实例化 GameObject 的正确方法?
【发布时间】:2015-01-28 16:18:48
【问题描述】:

所以我对在 Unity c# 中实例化预制游戏对象的正确方法感到两难。

这是两个示例代码

示例 1:

public Transform musicPrefab;
GameObject mManager = (GameObject)Instantiate(musicPrefab,transform.position, Quaternion.identity); 

示例 2:

public Transform musicPrefab;
Object mManager = Instantiate(musicPrefab,transform.position, Quaternion.identity);

但实例化为 Object 也可以,那么哪种方式是正确的方式?

【问题讨论】:

  • GameObject 应该有它的特定方法,这些方法在 Object 中不可用

标签: c# unity3d instantiation gameobject


【解决方案1】:

输入object 太笼统了。这并没有多大意义,因为您将无法在 Unity3D 中使用 object 做任何有意义的事情。当你实例化一个预制件时,你通常期望创建一个GameObject (有没有你实际上没有得到游戏对象的情况??我个人从未遇到过这种情况......),所以应该是正确的大大地。 GameObject 有许多可以使用的属性和方法。无论哪种方式,您都必须稍后将结果转换为 GameObject...

【讨论】:

  • 这就解释了,所以在实例化时我应该总是选择 GameObject,因为属性。现在明白了,所以对象有点“无用”。
  • 您并不总是需要将其实例化为 GameObject... 假设您有一个“Item”类,其中包含您想要访问的特定方法。你可以做 Item item = Instantiate(itemPrefab, positionOfItem, rotationOfItem) as Item;这样您在尝试访问游戏对象上的项目脚本时就不必使用 GetComponent() 方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多