21

我正在创建一个场景,我想在其中显示优惠列表。为了显示报价,我创建了一个带有占位符的预制件,用于在运行时获得的报价详细信息。我在场景中创建了一个占位符以将预制件添加到场景中,但它没有显示在 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 的新手,我不确定我在这里缺少什么。

4

2 回答 2

15
//Drag object prefab to variable in inspector
public GameObject spawnObject;
//----------------------------------------

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

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

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

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

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

于 2013-10-15T14:36:16.053 回答
8

在 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 是唯一可用的 gui 系统,所以我推荐它。然而,有一个官方的 Unity UI 系统(AKA uGUI),你不必真的使用 NGUI,更不用说 gui 战争仍在继续。

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

于 2013-08-03T10:26:33.050 回答