2013-03-19 9 views
17

Tworzę scenę, w której chcę wyświetlić listę ofert. Aby pokazać ofertę, stworzyłem prefabrykat z symbolami zastępczymi dla szczegółów oferty, które otrzymam w czasie wykonywania. Stworzyłem uchwyt na miejscu w scenie, aby dodać prefabrykację do sceny, ale nie jest ona wyświetlana w interfejsie użytkownika. OfferHolderClass:Dodaj obiekt dynamicznie do sceny w Unity3d

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() { 

    } 
} 

Jestem nowy Jedności i nie jestem pewien, co ja tu brakuje.

+0

Czy wykonane pewno instancję Prefab na właściwym miejscu? spróbuj ręcznie określić współrzędne. – Botz3000

+0

Co @ Botz3000 powiedział. Kiedy wywołujesz Natychmiastowy brak pozycji lub argumentów orientacji, te wartości są pobierane z domyślnych ustawień twojego prefabrykatu. – Jerdak

+0

Jakie współrzędne mogę podać? –

Odpowiedz

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

Poniżej stworzy GameObject użyciu obiektów własne Transform ustawienia.

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

Poniżej stworzy GameObject użyciu obiektów Rodzice Transform ustawienia.

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

Nie wiem, czy to pomoże, ale powodzenia na grze :)

7

W Unity możesz to zrobić w ten sposób.

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

Zobacz także: http://docs.unity3d.com/Documentation/ScriptReference/Object.Instantiate.html

Specjalnie dla Stanowisko, to musi się przed obiektywem aparatu, albo nie może go zobaczyć.

Co więcej, sugeruję, żebyś spojrzał na NGUI. Jest to potężny system GUI z kilkoma przydatnymi API do opracowania. BTW Nie mogę sobie wyobrazić, jak trudno jest tworzyć gry bez takich rzeczy, więc możesz potrzebować go wcześniej czy później; \

Dzięki niemu możesz to łatwo zrobić.

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

UPDATE:

Kiedy ten odpowiedział, NGUI jest TYLKO użytkowej System GUI, więc polecam. Istnieje jednak oficjalny system Unity UI (AKA uGUI), tak naprawdę nie musisz używać NGUI, pozostawiając samą wojnę gui nadal trwającą.

Co więcej, możesz wziąć wzięty w system basenowy. Jest używany do obsługi potężnych obiektów typu game, takich jak kule, kostki itp. Jeśli masz setki konkretnych obiektów w tej samej scenie i cierpiących na instancję, prawdopodobnie potrzebujesz puli. Osobiście wypróbowałem FastPool i działa dobrze, właściwie wszystkie jego zasoby działają dokładnie tak samo.

Powiązane problemy