Naja, das mit den GameObjects und der Stöpselei der Komponenten ist nicht so wild. Was ich aber recht unlogisch finde, ist z.B. dieser Code, den ich in der Doku gefunden habe:

Code:
// A grenade
// - instantiates a explosion prefab when hitting a surface
// - then destroys itself

var explosionPrefab : Transform;

function OnCollisionEnter(collision : Collision) {
    // Rotate the object so that the y-axis faces along the normal of the surface
    var contact : ContactPoint = collision.contacts[0];
    var rot : Quaternion = Quaternion.FromToRotation(Vector3.up, contact.normal);
    var pos : Vector3 = contact.point;
    Instantiate(explosionPrefab, pos, rot);
    // Destroy the projectile
    Destroy (gameObject);
}



Mir geht es dabei um Instantiate(explosionPrefab, pos, rot);.
Warum ist explosionPrefab vom Typ Transform? Sollte das nicht stattdessen der Name des Prefab-Objekts im ProjectView oder wenigstens eine ID sein?

Das ist eines von vielen Beispielen, weswegen ich mit Unity nur ungern arbeiten möchte.

Edit: Mit var explosionPrefab : Transform; erzeugt man ja eine neue Eigenschaft im Inspektor und kann dort ein Prefab im Editor zuweisen. Das erklärt aber noch lange nicht, warum explosionPrefab den Typ Transform hat.

Last edited by Wicht; 04/07/12 19:13.