web-dev-qa-db-fra.com

Ajouter un objet de jeu dynamiquement à la scène dans Unity3d

Je crée une scène dans laquelle je souhaite afficher la liste des offres. Afin de montrer l'offre, j'ai créé un préfabriqué avec des espaces réservés pour les détails de l'offre que j'obtiendrai au moment de l'exécution. J'ai créé un espace réservé dans la scène pour ajouter le préfabriqué à la scène, mais il ne s'affiche pas sur l'interface utilisateur. 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 () {

    }
}

Je suis nouveau chez Unity et je ne suis pas sûr de ce qui me manque ici.

19
Ashwani K
//Drag object prefab to variable in inspector
public GameObject spawnObject;
//----------------------------------------

Ci-dessous va créer GameObject en utilisant les objets Propre Paramètres de transformation.

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

Ci-dessous va créer GameObject en utilisant les objets Parents Paramètres de transformation.

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

Je ne sais pas si cela aide, mais bonne chance pour votre jeu :)

13
UnityFan2013

Dans Unity, vous pouvez le faire comme ça.

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

Voir aussi: http://docs.unity3d.com/Documentation/ScriptReference/Object.Instantiate.html

Surtout pour la position , elle doit se trouver devant votre caméra, sinon vous ne la verrez peut-être pas.

De plus, je vous suggère de jeter un œil à NGUI. C'est un système GUI puissant avec une API utile pour développer. BTW Je ne peux pas imaginer à quel point il est difficile de développer des jeux sans une telle chose, donc vous en aurez peut-être besoin tôt ou tard; \

Avec lui, vous pouvez le faire facilement.

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

MISE À JOUR:

Quand j'ai répondu à cela, NGUI est le [~ # ~] seulement [~ # ~] système de gui utilisable, donc je l'ai recommandé. Cependant, il existe un système d'interface utilisateur officiel Unity (AKA uGUI), vous n'avez pas vraiment besoin d'utiliser NGUI, laissez la guerre des gui se poursuivre.

De plus, vous voudrez peut-être prendre un système de piscine. Il est utilisé pour gérer des objets de jeu massifs comme des balles, des cubes, etc. Si vous avez des centaines d'objets de jeu spécifiques dans la même scène et souffrant d'instanciation, alors vous avez probablement besoin d'un pool. Personnellement, j'ai essayé FastPool et cela fonctionne bien, en fait tous les actifs de ce genre fonctionnent exactement de la même manière.

8
zhuchun