ScriptからSortingLayerを追加する
オレオレライブラリ、と言うかオレオレ開発環境を構築する上で、SortingLayerを自動的に設定したい場合が有ります。
そのための手順を調べたのでメモしておきます。
ScriptからSortingLayerを追加するテスト。
— MIYAKE (@ScreenPocket) October 12, 2021
Qiitaの記事用に動画を張り付け。 pic.twitter.com/YRx4EQKcjr
先に参考資料を貼っておきます
↑の記事にあるコードと、コメントにある修正部分を参照してメソッドを用意します
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を名前とワンセットで揃えておいた方が良いかもしれませんね。
Author And Source
この問題について(ScriptからSortingLayerを追加する), 我々は、より多くの情報をここで見つけました https://qiita.com/ScreenPocket/items/4e5a7dfbb5e5b9db9b90著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .