Я забыл, что был способ сделать это.
С помощью скрипта Editor мы сохраним на диске guiskins редактора:
bool saveAssets = false;
foreach (var editorSkin in Enum.GetValues(typeof(EditorSkin)).Cast<EditorSkin>())
{
string file = Path.Combine("Assets", "StreamingAssets", $"{editorSkin.ToString()}.guiskin");
if (!File.Exists(file))
{
AssetDatabase.CreateAsset(Instantiate(EditorGUIUtility.GetBuiltinSkin(editorSkin)), file);
saveAssets = true;
}
}
if (saveAssets)
AssetDatabase.SaveAssets();
И тогда мы можем просто сохранить в папке «Ресурсы» и загрузить ее с Resources.Load
:
![...](https://i.stack.imgur.com/v2tYO.png)
//
// Summary:
// Enum that selects which skin to return from EditorGUIUtility.GetBuiltinSkin.
public enum GlobalSkin
{
//
// Summary:
// The skin used for game views.
Game = 0,
//
// Summary:
// The skin used for inspectors.
Inspector = 1,
//
// Summary:
// The skin used for Scene views.
Scene = 2
}
А затем просто создайте метод для их возврата:
// Get one of the built-in GUI skins, which can be the game view, inspector or scene view skin as chosen by the parameter.
public static GUISkin GetBuiltinSkin(GlobalSkin skin)
{
return Resources.Load<GUISkin>($"Skins/{skin.ToString()}");
}
Все остальное делается с помощью GUISkin.FindStyle("whatever")
.