Jump to content
Unity Insider Forum

Suche Möglichkeit, dass Update() durch Childklassen nicht überschrieben wird


MaZy

Recommended Posts

Hallo ich habe ein riesen Problem.

 

Ich mache gerade eigenes Networksystem für Unity.

Da habe ich zwei Klassen. Die eine Klasse erbt die andere Klasse. Bei der BaseClass läuft im Hintergrund eine Funktion die im Update() drinne ist. Da werden die Daten gelesen die aus dem Netzwerk kommen.

 

Das Problem ist, wenn man Erbt haben beide Klassen immer noch Monobehavior und komischerweise werden immer die Funktionen wie

Awake()

Start()

Update()

usw überschrieben, wenn sie im Child stehen.

 

Ich könnte base.Update() benutzen, aber ich will die user nicht dazu zwingen. Man würde das ja auch mal vergessen oder so.

 

Irgendeine Idee wa sman da machen könnte?

Ich habe schon an eigene Threadings gedacht, aber es ist nicht so Safe glaube ich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kannst du das genauer aufschreiben? Dein Ausdruck lässt ein wenig zu wünschen übrig ;)

Ja habe ich gemerkt, als ich nochmal gelesen habe. Ich war an dem Tag richtig müde. Wollte noch es schreiben bevor ich schlafen ging. 16 Stunden wach bleiben ist schon hart xD.

 

Keine Ahnung ob man Unity dazu zwingen kann beide Methoden aufzurufen, ansonsten mach doch sowas:

 

public class BaseClass
{
public void Update()
{
	OnUpdate();
}

public virtual void OnUpdate
{
}
}
public class ChildClass
{
public override OnUpdate()
{
}
}

Das ist eine Möglichkeit, aber nicht die ideale Lösung. Die User könnten ja trotzdem die Update() Methode trotzdem aufrufen, weil sie denken sie brauchen das mal.

 

Ich habe nun mit Threads gearbeitet.. eher gesagt mit einem Timer (weil man das besser pausieren kann).

Noch funktioniert es gut. Musste echt viel rumfummeln. Ist schon doof, dass der Timer läuft, obwohl der Editor auf Pause ist oder nicht mehr im Playmode ist ^^. Da muss man echt aufpassen. Aber nun geht es einigermaßen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...