LoginSignup
0
0

More than 1 year has passed since last update.

ScriptからSortingLayerを追加する

Posted at

オレオレライブラリ、と言うかオレオレ開発環境を構築する上で、SortingLayerを自動的に設定したい場合が有ります。
そのための手順を調べたのでメモしておきます。

先に参考資料を貼っておきます

↑の記事にあるコードと、コメントにある修正部分を参照してメソッドを用意します

SettingWindow.csの一部
        /// <summary>
        /// SortingLayerの準備
        /// </summary>
        private static void SetupSortingLayer()
        {
            string[] sortingLayerNames = {"UI","SystemUI"};//←追加したいSortingLayerをご自由に
            foreach (var sortingLayerName in sortingLayerNames)
            {
                CreateSortingLayer(sortingLayerName);
            }            
        }

        /// <summary>
        /// SoringLayerを追加
        /// </summary>
        /// <param name="layerName">追加したいSortingLayerの名前</param>
        private static void CreateSortingLayer(string layerName)
        {
            var serializedObject = new SerializedObject(AssetDatabase.LoadMainAssetAtPath("ProjectSettings/TagManager.asset"));
            var sortingLayers = serializedObject.FindProperty("m_SortingLayers");
            for (var i = 0; i < sortingLayers.arraySize; i++)
            {
                if (sortingLayers.GetArrayElementAtIndex(i).FindPropertyRelative("name").stringValue.Equals(layerName))
                {
                    Debug.LogWarning($"Already Exists SortingLayer! name:{layerName}");
                    return;
                }
            }

            sortingLayers.InsertArrayElementAtIndex(sortingLayers.arraySize);
            var newLayer = sortingLayers.GetArrayElementAtIndex(sortingLayers.arraySize - 1);
            newLayer.FindPropertyRelative("name").stringValue = layerName;
            newLayer.FindPropertyRelative("uniqueID").intValue = (int)System.DateTime.Now.Ticks;
            serializedObject.ApplyModifiedProperties();
        }

という事でSerializedObject経由でFindPropertyを使って設定できるようです。
uniqueIDの設定方法が少々癖があるっぽいですね。
上記コードは参考資料のコメントのまま記載しましたが、
オレオレライブラリ内でSortingLayerを継続利用したい場合はuniqueIDを名前とワンセットで揃えておいた方が良いかもしれませんね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0