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.