Odin Attributes 为Unity开发者提供了更多的自定义选项,使得开发过程更加高效和愉悦。通过使用这些特性,开发者可以创建更加专业和用户友好的编辑器界面,从而提升整个开发团队的工作效率。
⭕️探索入口
📂 Odin Attributes 大全 | 目录索引
💯 概述
Tab Group 特性:用于任何属性,并将属性组织到不同的选项卡中。 使用它来组织不同的值,以制作一个干净且易于使用的 Inspector。
💯 使用方法
- 创建一个选项卡组 并指定选项卡组的名称
[TabGroup("Tab A")]
public int One;
[TabGroup("Tab A")]
public int Two;
[TabGroup("Tab A")]
public int Three;
[TabGroup("Tab B")]
public string MyString;
[TabGroup("Tab B")]
public float MyFloat;
[TabGroup("Tab C")]
[HideLabel]
public MyTabObject TabC;
- 可以为选项卡指定对应的组
[TabGroup("New Group", "Tab A")]
public int A;
[TabGroup("New Group", "Tab A")]
public int B;
[TabGroup("New Group", "Tab A")]
public int C;
[TabGroup("New Group", "Tab B")]
public string D;
[TabGroup("New Group", "Tab B")]
public float E;
[TabGroup("New Group", "Tab C")]
public MyTabObject F;
[Serializable]
public class MyTabObject
{
public int A;
public int B;
public int C;
}
- 嵌套复杂的情况
[TitleGroup("Tabs")]
[HorizontalGroup("Tabs/Split", Width = 0.5f)]
[TabGroup("Tabs/Split/Parameters", "A")]
public string NameA, NameB, NameC;
[TabGroup("Tabs/Split/Parameters", "B")]
public int ValueA, ValueB, ValueC;
[TabGroup("Tabs/Split/Buttons", "Responsive")]
[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]
public void Hello() { }
[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]
public void World() { }
[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]
public void And() { }
[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]
public void Such() { }
[Button]
[TabGroup("Tabs/Split/Buttons", "More Tabs")]
[TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "A")]
public void SubButtonA() { }
[Button]
[TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "A")]
public void SubButtonB() { }
[Button(ButtonSizes.Gigantic)]
[TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "B")]
public void SubButtonC() { }
- 带icon的标签页
[TabGroup("General")]
public string playerName1;
[TabGroup("General")]
public int playerLevel1;
[TabGroup("General")]
public string playerClass1;
[TabGroup("Stats")]
public int strength1;
[TabGroup("Stats")]
public int dexterity1;
[TabGroup("Stats")]
public int intelligence1;
[TabGroup("Quests")]
public bool hasMainQuest1;
[TabGroup("Quests")]
public int mainQuestProgress1;
[TabGroup("Quests")]
public bool hasSideQuest1;
[TabGroup("Quests")]
public int sideQuestProgress1;
[TabGroup("tab2", "General", SdfIconType.ImageAlt, TextColor = "green")]
public string playerName2;
[TabGroup("tab2", "General")]
public int playerLevel2;
[TabGroup("tab2", "General")]
public string playerClass2;
[TabGroup("tab2", "Stats", SdfIconType.BarChartLineFill, TextColor = "blue")]
public int strength2;
[TabGroup("tab2", "Stats")]
public int dexterity2;
[TabGroup("tab2", "Stats")]
public int intelligence2;
[TabGroup("tab2", "Quests", SdfIconType.Question, TextColor = "@questColor", TabName = "")]
public bool hasMainQuest2;
[TabGroup("tab2", "Quests")]
public Color questColor = new Color(1, 0.5f, 0);
[TabGroup("shrink tabs", "World Map", SdfIconType.Map, TextColor = "orange", TabLayouting = TabLayouting.Shrink)]
[TabGroup("shrink tabs", "Character", SdfIconType.PersonFill, TextColor = "orange")]
[TabGroup("shrink tabs", "Wand", SdfIconType.Magic, TextColor = "red")]
[TabGroup("shrink tabs", "Abilities", TextColor = "green")]
[TabGroup("shrink tabs", "Missions", SdfIconType.ExclamationSquareFill, TextColor = "yellow")]
[TabGroup("shrink tabs", "Collection 1", TextColor = "blue")]
[TabGroup("shrink tabs", "Collection 2", TextColor = "blue")]
[TabGroup("shrink tabs", "Collection 3", TextColor = "blue")]
[TabGroup("shrink tabs", "Collection 4", TextColor = "blue")]
[TabGroup("shrink tabs", "Settings", SdfIconType.GearFill, TextColor = "grey")]
[TabGroup("shrink tabs", "Guide", SdfIconType.QuestionSquareFill, TextColor = "blue")]
public float a, b, c, d;
[TabGroup("multi row", "World Map", SdfIconType.Map, TextColor = "orange", TabLayouting = TabLayouting.MultiRow)]
[TabGroup("multi row", "Character", SdfIconType.PersonFill, TextColor = "orange")]
[TabGroup("multi row", "Wand", SdfIconType.Magic, TextColor = "red")]
[TabGroup("multi row", "Abilities", TextColor = "green")]
[TabGroup("multi row", "Missions", SdfIconType.ExclamationSquareFill, TextColor = "yellow")]
[TabGroup("multi row", "Collection 1", TextColor = "blue")]
[TabGroup("multi row", "Collection 2", TextColor = "blue")]
[TabGroup("multi row", "Collection 3", TextColor = "blue")]
[TabGroup("multi row", "Collection 4", TextColor = "blue")]
[TabGroup("multi row", "Settings", SdfIconType.GearFill, TextColor = "grey")]
[TabGroup("multi row", "Guide", SdfIconType.QuestionSquareFill, TextColor = "blue")]
public float e, f, g, h;
[Serializable]
[HideLabel]
public class MyTabObject
{
public int A;
public int B;
public int C;
}
💯 完整示例代码
using Sirenix.OdinInspector;
using System;
using UnityEngine;
public class TabGroupAttributeExample : MonoBehaviour
{
[TabGroup("Tab A")]
public int One;
[TabGroup("Tab A")]
public int Two;
[TabGroup("Tab A")]
public int Three;
[TabGroup("Tab B")]
public string MyString;
[TabGroup("Tab B")]
public float MyFloat;
[TabGroup("Tab C")]
[HideLabel]
public MyTabObject TabC;
[TabGroup("New Group", "Tab A")]
public int A;
[TabGroup("New Group", "Tab A")]
public int B;
[TabGroup("New Group", "Tab A")]
public int C;
[TabGroup("New Group", "Tab B")]
public string D;
[TabGroup("New Group", "Tab B")]
public float E;
[TabGroup("New Group", "Tab C")]
public MyTabObject F;
[Serializable]
public class MyTabObject
{
public int A;
public int B;
public int C;
}
[TitleGroup("Tabs")]
[HorizontalGroup("Tabs/Split", Width = 0.5f)]
[TabGroup("Tabs/Split/Parameters", "A")]
public string NameA, NameB, NameC;
[TabGroup("Tabs/Split/Parameters", "B")]
public int ValueA, ValueB, ValueC;
[TabGroup("Tabs/Split/Buttons", "Responsive")]
[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]
public void Hello() { }
[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]
public void World() { }
[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]
public void And() { }
[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]
public void Such() { }
[Button]
[TabGroup("Tabs/Split/Buttons", "More Tabs")]
[TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "A")]
public void SubButtonA() { }
[Button]
[TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "A")]
public void SubButtonB() { }
[Button(ButtonSizes.Gigantic)]
[TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "B")]
public void SubButtonC() { }
}
💯 Odin 下载地址
🍉🍉🍉 如果觉得这篇文对你有帮助的话,请点个赞👍、收藏⭐️下吧,非常感谢! 💕💕💕
【博主简介】:10年以上软件开发经验,精通C语言
、C++
、C#
、Java
等开发语言,开发过大型 Android 项目,现主要自主开发经营 休闲益智类小游戏。
【粉丝福利】:博主收藏了大量游戏开发资源和素材。这些资源经过博主多年整理沉淀,现筛选一批精品资源,分享给大家学习研究。
Unity打怪军团 广招天下勇士加入 Unity学习互助小组 有意进群的同学联系我,互3互推也请联系我…