EditorUtility.SetDirty 设置已改变

static function SetDirty (target : Object) : void

Description描述

Marks target object as dirty.

标记目标物体已改变。

Unity internally uses the dirty flag to find out when assets have changed and need to be saved to disk.

当资源已改变并需要保存到磁盘,Unity内部使用dirty标识来查找。

E.g. if you modify a prefab's MonoBehaviour or ScriptableObject variables, you must tell Unity that the value has changed. Unity builtin components internally call SetDirty whenever a property changes. MonoBehaviour or ScriptableObject don't do this automatically so if you want your value to be saved you need to call SetDirty.

例如,如果修改一个prefab的MonoBehaviourScriptableObject变量,必须告诉Unity该值已经改变。每当一个属性发生变化,Unity内置组件在内部调用setDirty。MonoBehaviourScriptableObject不自动做这个,因此如果你想值被保存,必须调用SetDirty。

// C# Example
// Set Wrapmode of each imported texture to Clamp
//设置每个导入纹理的循环模式到Clamp
using UnityEngine;
using UnityEditor;
using System.Collections;

public class TexturePreprocessor : AssetPostprocessor {
	void OnPostProcessTexture() {
		TextureImporter textureImporter = assetImporter as TextureImporter;
		textureImporter.mipmapEnabled = false;

		string path = textureImporter.assetPath;

		Object asset = AssetDatabase.LoadAssetAtPath(path, typeof(Texture2D));
		Texture2D texture = asset as Texture2D;

		if (texture != null) {
			Debug.Log("Texture path: " + path);
			texture.wrapMode = TextureWrapMode.Clamp;
			EditorUtility.SetDirty(asset);
		} else {
			Debug.Log("error " + path);
		}
	}
}
Page last updated: 2011-7-15