Ich ändere eine Material Textur in einem Editor-Skript. Nach dem Ausführen kann ich die Änderungen im Editor-Fenster sehen, aber wenn ich meine Szene speichere oder spiele, sind die Änderungen verloren.Materialänderungen von Editor-Skript gehen beim Speichern verloren
Hier ist mein Code:
var mySkyBox = Resources.Load<Material>("Materials/MySkyBox");
Undo.RecordObject(mySkyBox, "setting mySkyBox texture");
var texture = new Texture2D(2, 2);
texture.LoadImage(File.ReadAllBytes("texturePath"));
mySkyBox.SetTexture("_UpTex", texture);
EditorUtility.SetDirty(mySkyBox);
Ich habe auch versucht LoadMainAssetAtPath
mit dem Material zu laden, aber das funktioniert auch nicht.
Ich bin mit Unity 5.3.7f1
Wie ich ein Material in einem Editor Skript korrekt bearbeiten kann und die Änderungen bestehen bleiben?
EditorSceneManager.MarkAllScenesDirty() auch nicht – lockstock
Hey funktioniert, klingt es interessant, dass die Einheit der es nicht speichern, nachdem Sie 'nennen SetDirty'. Aber Sie können versuchen, 'AssetDatabase.SaveAssets();' aufzurufen - es könnte helfen. Sie können auch versuchen, AssetDatabase zu verwenden, um ein Asset zu laden: https://docs.unity3d.com/ScriptReference/AssetDatabase.LoadAssetAtPath.html – zhekazheka