青空の月

PHP, Unity, C#, アプリ開発関連について。

チーム共通設定に.assetファイルを扱う

ゲームのプレイデータとかは「PlayerPrefs」、エディタ系のデータは「EditorPrefs」に保存すればいいんだけど、「EditorPrefs」ってプロジェクトフォルダ外に保存されるのでチーム間で共通させたい設定パラメータとかには向かない。

 

そんな時は「asset」ファイルを使うと良いかもしれない。

テキストファイルでも、CSVでもJSON形式でも同じ事はできるけど、「asset」ファイルも知っておくと便利。

CSVやJSONを使うとクラスに変換する手間がかかったりするけどassetファイルを使えば特に変換する手間がかからないので扱いやすい。

 

Unityのクラスを継承しない自作クラスをassetファイルにする場合は、「ScriptableObject」を継承させる必要がある。

 

自分の使用例はエディタ拡張でアプリのバージョンとかをassetファイルで保存させ自動でプロジェクトに反映するようにしている。

 

 

assetについて

http://anchan828.tumblr.com/post/23046143974/unity-asset


保存と読み込みはこのサンプルが参考になった。
https://gist.github.com/anchan828/4697447

 

自作classはScriptableObjectを継承させる。

using UnityEngine;

class MySetting : ScriptableObject {
    public int APP_VER_MAJOR = 0;
	public int APP_VER_MINOR = 0;
	public int APP_VER_REVISION = 0;
}

 

Loadして保存する例

MySetting mySetting = Asset.Load<MySetting>();

mySetting.APP_VER_MINOR = 200;

Asset.Save<MySetting>(mySetting);

 

サンプルのSaveだと変更が反映されなかったので更新時は 

EditorUtility.SetDirty(asset);

で変更をUnityに教える必要があった。 

 

assetファイルを選択するとInspectorから確認もできる。

f:id:masa795:20130318104427j:plain

 

こちらのSlideにはassetファイルの説明とこんな事もできるよって事が載ってます。
http://www.slideshare.net/pigeon6/ss-15740075