Ich arbeite an der Erstellung eines unidirectional flow framework in Unity.String dynamisch an einen anderen String ('Muting' ein C# String)
Derzeit bin ich fest auf Text Updates zu bekommen, um so zu arbeiten, wie ich will. Hier ist, wie ich es möchte arbeiten:
- Ich habe eine Zeichenfolge auf einem Skript gespeichert:
myString
- ich beliebig viele andere Zeichenfolge ist daran binden können:
string1 = myString
,string2 = myString
etc - Wenn ich ändern
myString
, alle anderen gebundenen Strings auch ändern
Hier ist meine (natürlich nicht in Betrieb) Code:
public class Binder : MonoBehaviour
{
public Button button;
public string buttonText = "Hi";
void Start()
{
buttonText = button.GetComponentInChildren<Text>().text;
}
// Update is called once per frame
void Update()
{
buttonText = Time.time.ToString();
}
}
Wie es offensichtlich ist, aktualisiert die Aktualisierung buttonText
nicht die button.GetComponentInChildren<Text>().text
(die bei "Hi" bleibt), weil es nur auf eine andere Zeichenfolge buttonText
zeigt.
Wenn String ein Objekt wäre, könnte ich das Objekt mutieren und es würde alle Referenzen aktualisieren. Das wäre fantastisch.
Meine Frage ist: Weißt du, wie ich eine Zeichenfolge mutieren kann, so dass alle anderen Zeiger auf die gleiche Zeichenfolge natürlich den gleichen Wert zeigen? Angenommen, ich speichere die Zeichenfolge "Hello" und habe zwei UnityButtons. Ich setze diese beiden UnityButtons.text auf diese "Hallo" -String. Wenn ich "Hello" auf "Bye" ändere, ändert sich auch der Text dieser beiden Tasten zu "Bye"?
Die Antwort hier könnte nicht einfacher sein, verwenden Sie einfach eine Eigenschaft. FBs Idee ist albern und wirklich nur konzeptionell bedeutungsvoll, wenn es um große Datenbankaktivitäten geht.Beachten Sie, dass FB in der Tat nichts anderes bedeutet als ihr "Flow" -System: Alles, was sie sagen, ist *** "funktioniert genauso auf Ihrer High-Level-db-Architektur, da gewöhnliche Eigenschaften in jeder Programmiersprache funktionieren" ** *. Ihre "Flow" - Idee ist in der Tat nichts anderes als das alltägliche "Eigentums" -Konzept auf der Sprachebene in C#. – Fattie
Zweitens, Aggressor, ich bin mir nicht sicher, ob Sie neu bei Unity sind (es ist schwer, sich an alle hier zu erinnern!), Aber Sie bekommen oft sehr ** erfahrene ** Programmierer, die ** neu sind **, die sich einbinden Knoten, weil sie nicht auf UnityEvent gestoßen sind. http://StackOverflow.com/a/36249404/294884 .. das ist die Grundidee in Unity Engineering. Du benutzt es ständig für alles. (Alles, was dir von Unity gegeben wird, das bereits implementiert ist, ist so gemacht, und alles, was du oder ich machen, wird auf diese Weise gemacht.) Tatsächlich ist FBs "Flow" Idee genau "UnityEvent" (auf der Architekturskala) . – Fattie
Ich habe das Dispatch-System für die Verwendung von Unity-Ereignissen und -Aktionen eingerichtet, aber ich habe versucht, auch Skripteigenschaften an den Speicher zu binden, damit die gebundenen Eigenschaften automatisch aktualisiert werden. Die Idee, die ich am meisten mag, ist das Single-Store-System. Es gibt einen Ort, an dem sich alle Instanzdaten befinden. Ich füge nur Fertighäuser an den Laden und dann den Laden zu aktualisieren. Ich habe jedoch experimentiert und bin ziemlich nah daran, es neu zu erstellen. Der wichtigste Vorteil, den ich "denke", ist es wert, dies zu tun, ist der Single-State-Aspekt. – Aggressor