繁体   English   中英

Unity-将组件从列表附加到GameObject

[英]Unity - Attach Component from a list to a GameObject

我有一个组件列表,我想给我的每个孩子一个列表中的每个组件及其特定值。

public List<ItemData> lootableItems = new List<ItemData>();

我想将该ItemData组件分配给已经具有ItemData组件的Item Prefab。 因此,我需要以某种方式交换组件,因此它具有列表中的更新值而不是默认值。

有没有简单的方法可以进行更改? 我在想类似的东西:

item.gameObject.AddComponent(lootableItems[i]);

感谢您的答复!

旧的GameObjet.AddComponent(string)函数有一个重载。

您可以这样使用它:

    ItemData data = gameObject.AddComponent<ItemData>();
    data.Value1 = lootableItems[i].Value1;
    (...)

然后禁用旧组件。

资料来源: http : //answers.unity3d.com/questions/936452/attaching-a-script-at-runtime.html '

另一种可能的解决方案是以相同的方式更改旧组件的值。 又名:

ItemData data = gameObject.GetComponent<ItemData>();
data.Value1 = lootableItems[i].Value1
(...)

最好不要在运行时修改预制件。 而是,实例化您的Item预制,然后更改实例化的GameObjectItemData组件的值:

GameObject newItem = Instantiate(item) as GameObject;
if (newItem != nulll)
{
  ItemData itemData = newItem.GetComponent<ItemData>();
  if (itemData != null)
  {
    itemData.price = lootableItems[i].price; //example
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM