【问题标题】:Add gameobject dynamically to scene in Unity3d在 Unity3d 中将游戏对象动态添加到场景中
【发布时间】:2013-03-19 12:55:10
【问题描述】:

我正在创建一个场景,我想在其中显示优惠列表。为了显示报价,我创建了一个带有占位符的预制件,用于在运行时获得的报价详细信息。我在场景中创建了一个占位符以将预制件添加到场景中,但它没有显示在 UI 上。 OfferHolderClass:

using UnityEngine;
using System.Collections;

public class OfferHolder : MonoBehaviour {

    public GameObject localOffer;
    // Use this for initialization
    void Start () {
        GameObject offer = Instantiate(localOffer) as GameObject;
        offer.GetComponent<Offer>().Text = "Testing";
        offer.transform.parent = this.transform;
    }

    // Update is called once per frame
    void Update () {

    }
}

我是 Unity 的新手,不确定我在这里缺少什么。

【问题讨论】:

  • 您确定在正确的位置实例化预制件了吗?尝试手动指定坐标。
  • @Botz3000 所说的。当您调用 Instantiate w/o 位置或方向参数时,这些值取自您的预制件的默认值。
  • 我可以给出什么坐标?
  • 您可以在Start () 的末尾添加Debug.Break () 语句,然后查看类似Offer (Clone) 的内容是否出现在层次结构视图中。
  • 您是否真的将预制件拖放到 Inspector 选项卡中的脚本变量上?

标签: c# unity3d gameobject ngui


【解决方案1】:
//Drag object prefab to variable in inspector
public GameObject spawnObject;
//----------------------------------------

下面将使用对象Own变换设置创建游戏对象。

 GameObject clone;
    clone = Instantiate(spawnObject.transform, 
                        spawnObject.transform.position, 
                        spawnObject.transform.rotation) as GameObject;

下面将使用对象Parents变换设置创建GameObject。

 GameObject clone;
    clone = Instantiate(spawnObject.transform, 
                        transform.position, 
                        transform.rotation) as GameObject;

不确定这是否有帮助,但祝你的游戏好运:)

【讨论】:

    【解决方案2】:

    在 Unity 中,您可以这样做。

     GameObject.Instantiate(prefab,new Vector3(1,1,0),Quaternion.identity);
    

    另请参阅:http://docs.unity3d.com/Documentation/ScriptReference/Object.Instantiate.html

    尤其是Position,它必须在你的相机前面,否则你可能看不到它。

    还有,我建议你看看NGUI。它是一个功能强大的 GUI 系统,带有一些有用的开发 API。顺便说一句,我无法想象没有这样的东西开发游戏有多难,所以你迟早会需要它;\

    有了它,你可以轻松做到。

    Gameobject go = NGUITools.AddChild(Gameobject Parent, Gameobject Prefab)
    

    更新:

    当我回答这个问题时,NGUI 是 ONLY 可用的 gui 系统,所以我推荐它。但是,有一个官方的 Unity UI 系统(AKA uGUI),你真的不必使用 NGUI,更不用说 gui 战争仍在继续。

    更重要的是,您可能想要参加泳池系统。它用于处理大型游戏对象,如子弹、立方体等。如果您在同一场景中有数百个特定游戏对象并且遭受实例化,那么您可能需要一个池。我个人尝试过 FastPool,它运行良好,实际上所有同类资产的运行方式完全相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多