Unity non ha questo tipo di rendering in "modalità diretta", non si chiamerà Draw
in alcun ciclo di aggiornamento per Unity.
In Unity devi creare un oggetto di gioco, quindi collegare gli script a quell'oggetto di gioco. Questi script controlleranno il comportamento dell'oggetto, se e come viene visualizzato sullo schermo, se fa parte del sistema fisico ecc.
Per creare un nuovo sprite da disegnare sullo schermo dovrai creare un nuovo oggetto di gioco, quindi collegare lo script SpriteRenderer e impostarne lo sprite.
GameObject go = new GameObject();
SpriteRenderer renderer = go.AddComponent<SpriteRenderer>();
renderer.sprite = Resources.Load("Sprites/Player", typeof(Sprite)) as Sprite;
Questo presuppone una struttura di directory di
-Assets
--Resources
---Sprites
----<Your 2D assets, set with their texture type to Sprite (2D and UI)>
Per esempio:
Quindi avresti avuto uno script diverso per cambiare posizione, rotazione ecc., A seconda di come vuoi che si comporti.
Il modo più semplice per ottenere tutto ciò senza dover scrivere più codice? Crea prima l'oggetto di gioco nell'editor Unity. Una volta che l'oggetto di gioco è dotato dello sprite desiderato e degli script di comportamento e tutto il resto. Trascinalo e rilascialo in una directory di risorse. Questo crea un prefabbricato. I prefabbricati sono proprio come sembrano, prefabbricati. Sono oggetti completi che puoi quindi fare riferimento e creare al volo.
Creeresti quelli come:
public void CreateObject(string prefabName) {
GameObject newObject =
GameObject.Instantiate(Resources.Load(prefabName)) as GameObject;
}
Ciò genererà un clone del prefabbricato creato in precedenza. Quindi, se per esempio, avessi dato al tuo prefabbricato il comportamento di muoversi verso il giocatore e attaccare, ogni volta che genererai un nuovo prefabbricato di quel tipo, inizieranno a muoversi verso il giocatore e ad attaccare. Gli script che dovevi scrivere una sola volta controllano tutti quegli oggetti di gioco.
Penso che la differenza principale che stai vedendo qui è l'uso pesante di componenti. Che probabilmente non hai visto in altri motori di gioco come XNA. Unity è davvero un motore potente, ma la tua frustrazione proviene dal tentativo di usarlo come altri motori, quando non è come altri motori. Controlla il mio profilo per un po 'di formazione, ho aggiunto un link per una prova gratuita in modo da non dover pagare.