Klassenvererbung

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Anubis
Beiträge: 4
Registriert: 08.02.2012, 21:34

Klassenvererbung

Beitrag von Anubis »

Hallo Zusammen,

ich habe ein Verständigungsproblem zur Klassenvererbung.

Ich habe zwei Scripte, die jeweils auf ein GameObject zugewisen sind.
ColorChanger ist auf ein Zylinder zugewisen:

Code: Alles auswählen

using UnityEngine;
using System.Collections;

public class ColorChanger : RoteWurst {
	public float Zeit;
	

	// Use this for initialization
	void Start () {
	
	renderer.material.color = Color.green;
	//	Zeit = Time.deltaTime;
		Zeit = 0F;
	}
	
	// Update is called once per frame
	void Update () {
		if (Zeit > 10)
		{
			renderer.material.color = Color.red;
			
			
			
		}
		Zeit += Time.deltaTime;
	//	Debug.Log(Zeit);
		
	
	}
	
	override protected void OnMouseDown(){
		wurstZahl ++;
	}
}
RoteWurst.cs ist auf eine Plane zugewisen:

Code: Alles auswählen

using UnityEngine;
using System.Collections;

public class RoteWurst : MonoBehaviour {
	public Texture2D Bild;
	public Texture2D Bild1;
	public Texture2D Bild2;
	public Texture2D Bild3;
	public int wurstZahl = 0;

	// Use this for initialization
	void Start () {
		renderer.material.mainTexture = Bild2;
	
	}
	
	// Update is called once per frame
	virtual protected void Update () {
		
		GrillWurstZahl();
	
	}
	
	virtual protected void OnMouseDown(){
		if (wurstZahl > 0){
		wurstZahl --;
		}
		else {
			Debug.Log("Es ist keine Wurst auf dem Grill");
		}
		
	}
	
	void GrillWurstZahl(){
		if (wurstZahl == 0)
		{
			renderer.material.mainTexture = Bild;	
		}
		if (wurstZahl ==1)
		{
				renderer.material.mainTexture = Bild1;	
		}
		if (wurstZahl == 2)
		{
				renderer.material.mainTexture = Bild2;	
		}
		if (wurstZahl == 3)
		{
				renderer.material.mainTexture = Bild3;	
		}
		
	}
}
Wenn ich jetzt die Zahl auf 3 stelle, und auf die Plane drücke, wird die Zahl verringert, und das Bild wird getauscht, alles ok soweit.
Aber wenn ich auf den Zylinder drücke sollte die Zahl (wurstZahl) wieder hoch gehen, was sie nicht macht.

Bin für jede Info dankbar.

Gruß

Anubis
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Re: Klassenvererbung

Beitrag von BeRsErKeR »

Interessant wäre vielleicht wie du die Objekte mit dem Plane bzw. Zylinder in Beziehung setzt.
Ohne Input kein Output.
Anubis
Beiträge: 4
Registriert: 08.02.2012, 21:34

Re: Klassenvererbung

Beitrag von Anubis »

Ich verstehe die Frage nicht ganz, das wird auch das Progblem sein oder? Mitlerweile habe ich mit getter und setter rumgespielt, auch ohne Erfolg. Ich dachte man kann eine Variable von einer Klasser in der anderen so "einfach" verändert... dem ist nicht so. Ich suche weiter, so schnell gebe ich nicht auf :)
Benutzeravatar
BeRsErKeR
Establishment
Beiträge: 689
Registriert: 27.04.2002, 22:01

Re: Klassenvererbung

Beitrag von BeRsErKeR »

Prinzipiell geht das schon wenn du die Methode überschreibst. Aber vielleicht hast du ja fälschlicherweise doch die Klasse RoteWurst an den Zylinder "zugewiesen" (was auch immer das bedeutet)?! Zur Not einfach mal mit dem Debugger durchsteppen, dann siehst du ja wo es lang geht. ;)
Ohne Input kein Output.
Anubis
Beiträge: 4
Registriert: 08.02.2012, 21:34

Re: Klassenvererbung

Beitrag von Anubis »

Habs!
Ich war auf dem Holzweg, hat nichts mit Vererbung zu tun, sonder damit das die Variable global nicht im Zugriff ist, mit:

Code: Alles auswählen

private static int _wurstZahl;

	public static int wurstZahl  {
        get {return _wurstZahl;}
        set { _wurstZahl = value; }
    }
gehts
Antworten