Simples Bausystem Unity3D

Aus Spieleprogrammierer-Wiki
Wechseln zu: Navigation, Suche

Bitte beachte, dass dieser Artikel noch unvollständig ist! Hilf mit, ihn fertigzustellen.
Näheres dazu findest du ggf. auf der Diskussionsseite. Wenn du der Meinung bist, dass der Artikel vollständig ist, kannst du diesen Hinweis entfernen.


Hier lernt ihr, wie man ein leichtes Bausystem in Unity3D umsetzen kann in der Sprache C#
Folgendes Tutorial ist aus eigenen Erfahrungen zusammen gestellt, die Zusammenarbeit mit anderen Autoren zur Verbesserung vom Tutorial ist gerne erwünscht. Die einzelnen Bereiche werden durch "m"-"kapitelnummer" von mir makiert. Tags und Variablen sind in Englisch um die Zusammenarbeit mit Englischen Programmierern zu ermöglichen. Dieses Tutorial setzt Grundkentnisse vorraus.

=== ℳ1 - Grundsystem & Vorbereitung ===
Um unser System in einer Umgebung testen zu können, erstellen wir eine neue Szene mit einem Terrain. Das Terrain sollte texturiert sein, um Änderungen und Aktionen besser zu sehen.

Um später auch die Gebäude zu erkennen, erzeugen wir in den "Tags" einen neuen Tag Namens "Building". http://up.picr.de/31597085cv.png Dazu gehen wir auf die "MainCamera" und klicken dann auf "AddTag", danach erscheint ein FensterManager, hier klicken wir auf das Plus unter der Kategorie "Tags" und erstellen die genannte "Building".

=== ℳ2 - Das erste Script ===
using UnityEngine;
using System.Collections;
using System.Collections.Generic;


public class Building : MonoBehaviour {

public class Buildings{

//Wir legen die Variablen öffentlich fest. Hier bestimmen wir ein Namen als String
//und legen ein Avatar fest, um später ein Bild im UI zu ermöglen (UI nicht im Tutorial enthalten)
public string name;
public GameObject avatar;

//Wir nutzen nun diese Methode, um später in der Liste zugreifen zu können auf die Informationen
public Buildings(string _name, GameObject _avatar){
name = _name;
avatar = _avatar;

}
}
//Wir benutzen eine Liste um unsere Gebäude in einer UI aufzulisten.
//[1] wir nutzen dazu das Unity3D hauseigene Tutorial, welches den Vorgang gut erklärt und ändern ihn ein wenig ab. Indem wir unsere Methode "Buildings" einspeisen.
public List<Buildings> buildingList = new List<Buildings>();
public Buildings newBuilding;
public GameObject[] buildings;

//In der "void Start"[2] starten wir nun den Bau der liste.
void Start(){

Ist der Integer (int i) gleich null und i real kleiner ist als buildings.lenght; dann führt sich die IF aus.
for (int i = 0; i < buildings.Length; i ++) {
newBuilding = new Buildings (100, buildings[i].name, buildings[i] );
buildingList.Add(newBuilding);
}

Debug.Log (buildingList[0]);
}
}


Der Inkrementoperator (++) erhöht seinen Operanden um 1. Der Inkrementoperator kann vor oder hinter seinem Operanden angezeigt werden: ++variable und variable++.

=== ℳ3 - Wo ein Building ist muss auch was vorhanden sein! ===
Wir haben nun das C# Script "Buildings" erstellt, wir benötigen nun aber noch ein Script, woran unser System erkennt, das dass Gebäude vorhanden ist, und das es platziert werden kann. Dieses machen wir durch das "Available" Script.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Available : MonoBehaviour {

public List<Collider> colliders = new List<Collider>();

private bool isSelected;
private Building buildingClass;

void Start () {
buildingClass = GetComponent<Building> ();
}

void Update () {

}

void OnTriggerEnter(Collider c){
if (c.tag == "Building") {
colliders.Add(c);
}
}

void OnTriggerExit(Collider c){
if (c.tag == "Building") {
colliders.Remove(c);
}
}

public void SetSelected(bool b){
isSelected = b;
}

void OnGUI(){
if (isSelected) {
GUI.Button(new Rect(100, 200, 100, 50), name);
}
}
}

DER REST FOLGT.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge