在游戏开发中,我们经常要对一些数据预先配置,一般可通过XML,Json配置. 还可以用Unity自带的.Asset资源配置文件配置数据,下面介绍一下如何灵活快速的创建.Asset文件并使用.
Asset文件可以直接配置如 GameObject、Sprite、AudioClip等高级的对象
直接上码:
1.
[CreateAssetMenu(fileName = "AssetTest",menuName = "__Asset/AssetTest")]
public sealed class AssetTest : ScriptableObject {
public int age;
public float height;
public GameObject obj;
public Sprite sprite;
public AudioClip audioClip;
}
2.在Asset目录下创建Editor文件夹,创建脚本
public class AssetTestEditor : Editor {
private const string ConfigDir = "Assets/Editor/Resources/Config";
private const string AssetTest= "AssetTest";
private const string FileNameFull = AssetTest+ ".asset";
[MenuItem("Test/Create .asset")]
public static void Create() {
AssetDatabase.StartAssetEditing();
AssetTest assetTest;
assetTest = ScriptableObject.CreateInstance<AssetTest>();
AssetDatabase.CreateAsset(assetTest, ConfigDir + "/" + FileNameFull );
assetTest.age = 10;
assetTest.height = 5.0f;
EditorUtility.SetDirty(assetTest);
//更新本地版本
AssetDatabase.StopAssetEditing();
AssetDatabase.SaveAssets();
}
}
在菜单栏里Test/Create .asset
现在你就可以通过ConfigDir路径下找到你创建的.asset文件
在创建一个脚本用来测试,挂在场景的对象上
AssetTest testConfig;
string ConfigDir = "Assets/Editor/Resources/Config/";
string ConfigFileName = "AssetTest.asset";
// Use this for initialization
void Start () {
this.testConfig = AssetDatabase.LoadAssetAtPath<AssetTest>(ConfigDir + ConfigFileName);
print("1:"+testConfig.age);
this.testConfig.age = Random.Range(1,100);
print("2:" + testConfig.age);
}
这样每次运行就会age就会改变新的值,不用保存,里面的值直接被修改了
附:你也可以通过WWW从服务器上下载数据给本地.asset文件赋值