Nicht ändern können public-Variablen an ein Skript angebracht, um ein gameobject. Werte sind wieder auf play

Hier ist meine erste Frage. Nicht in der Lage gewesen, irgend etwas zu finden über das Thema.

Ich möchte ein editor-script, dass die änderungen eine Reihe von öffentlichen bools in einem Skript, der an ein GameObject.

Habe ich dieses Skript angebracht, um ein GameObject. Das GameObject ist ein Fertighaus:

using UnityEngine;
using System.Collections;

public class ScriptWithPublicBools : MonoBehaviour {

    public bool b1;
    public bool b2;
}

Und hier ist mein editor Skript:

using UnityEngine;
using System.Collections;
using UnityEditor;

public class EditorHelper : ScriptableObject
{
    [MenuItem("Trace/Trace")]
    public static void trace()
    {
        foreach (GameObject g in Selection.gameObjects)
        {
            ScriptWithPublicBools tb = g.GetComponent<ScriptWithPublicBools>();

            if (tb)
            {
                tb.b1 = false;
                tb.b2 = true;
            }
        }
    }
}

Die Skripte funktionieren und die bools auf das gameobject ist richtig eingestellt in den editor. Aber wenn ich die PLAY-Taste drücken, die Werte der beiden bool-Schalter wieder die Werte, die Sie waren, bevor das Skript angewendet wurde.

Ist es egal, was die Werte der prefab ist, werden die Werte wieder auf die Werte vor der Anwendung der Skript-editor.

Mache ich etwas falsch oder ist es ein bug?

Habe ich, wenn ich das editor-Skript speichern Sie die Szene als neue Szene, und öffnen Sie die neu erstellte Szene, die Werte sind auch falsch.

ABER, wenn das GameObject ist nicht ein prefab funktioniert alles perfekt, und die Werte behalten Ihre Werte, die vom editor-script, also auch nach der Einleitung der play-Modus.

So, das problem ist nur vorhanden, wenn mit prefabs.

btw, ich bin auf Unity 3.5.0
+1 interessant und willkommen SO. (Das GameObject ist ein Fertighaus): Ein GameObject in der Szene, ist aus meinem Verständnis ein Beispiel für ein Fertighaus, aber nicht das prefab selbst. Verstehe ich Sie richtig, dass die änderungen sichtbar sind in diesem Fall aber nicht angewendet, um das prefab selbst?
Ja, Sie haben mich verstanden, richtig. Und Sie sind richtig, dass das GameObject in meine Szene ist ein Beispiel für ein Fertighaus. Die Werte werden gesetzt, indem Sie den Skript-editor werden nur dann angewendet und sichtbar auf das GameObject in die Szene – Sie sind nicht auf das Fertighaus. Aber wenn ich drücken Sie die PLAY-Taste oder speichern Sie die Szene und erneut öffnen, werden die Werte nicht gespeichert, sondern Sie werden wieder auf die Werte vor der Anwendung der Skript-editor. Dies geschieht nicht, wenn ich brechen die prefab Instanz.

InformationsquelleAutor ymerkryds | 2012-04-19

Schreibe einen Kommentar