网站首页 > 游戏开发 正文
Unity提供了强大的Editor功能, 我们可以很轻易的在EditorGUI中绘制任意的属性。比如我之前写的文章 http://www.xuanyusong.com/archives/2202
那么问题就来了,如果我有多属性想共用同一段自定义控件,那么这种方法我就需要在多份代码里绘制控件了OnInspectorGUI 这一节中我们需要用到两个全新的自定义属性PropertyAttribute和PropertyDrawer。 可以理解为一个是数据,一个是渲染。
数据代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
using
UnityEngine
;
using
System
.
Collections
;
public
class
MyTestAttribute
:
PropertyAttribute
{
public
int
max
;
public
int
min
;
public
MyTestAttribute
(
int
a
,
int
b
)
{
min
=
a
;
max
=
b
;
}
}
|
渲染代码,如果你想做一些复杂的结构,直接在OnGUI里面插入代码即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
using
UnityEditor
;
using
System
.
Collections
.
Generic
;
using
UnityEngine
;
[
CustomPropertyDrawer
(
typeof
(
MyTestAttribute
)
)
]
public
class
MyTestDrawer
:
PropertyDrawer
{
public
override
void
OnGUI
(
UnityEngine
.
Rect
position
,
SerializedProperty
property
,
UnityEngine
.
GUIContent
label
)
{
MyTestAttribute
attribute
=
(
MyTestAttribute
)
base
.
attribute
;
property
.
intValue
=
Mathf
.
Min
(
Mathf
.
Max
(
EditorGUI
.
IntField
(
position
,
label
.
text
,
property
.
intValue
)
,
attribute
.
min
)
,
attribute
.
max
)
;
}
}
|
最后在需要用这个通用组件的代码上添加如下代码即可。
1
2
3
4
5
6
7
8
9
10
|
using
UnityEngine
;
using
System
.
Collections
;
public
class
Game
:
MonoBehaviour
{
[
MyTestAttribute
(
0
,
100
)
]
public
int
intValue
=
0
;
}
|
如下图所示,这个属性的渲染就已经完全独立出来了。
猜你喜欢
- 2022-04-24 Unity3D研究院之通过ipa或apk获取游戏所使用的unity和Xcode版本
- 2022-04-24 Unity3D研究院编辑器之脚本生成Preset Libraries(十四)
- 2021-09-07 Unity3D研究院之系统内置系统图标大整理
- 2021-09-06 Unity3D研究院编辑器之5.3JSON的序列化
- 2021-09-06 Unity3D研究院编辑器之脚本打开SpritePacker窗口(十七)
- 2021-09-06 #你好Unity3D#Hierarchy视图监听gameObject点击事件
- 2021-09-04 Unity3D研究院编辑器之自定义默认资源的Inspector面板(十)
- 2021-09-04 Unity3D研究院之两个游戏工程资源同步问题(八十六)
- 2021-09-04 Unity3D研究院编辑器之不实例化Prefab获取删除更新组件(十五)
- 2021-08-30 Unity3D研究院之悬浮框显示其他游戏电流功耗(一百二十六)
你 发表评论:
欢迎- 开源分类
- 最近发表
-
- Unity3D研究院之通过ipa或apk获取游戏所使用的unity和Xcode版本
- Unity3D研究院编辑器之脚本生成Preset Libraries(十四)
- 手把手教你Charles抓包工具使用
- python开发的程序内存越来越大_遇到个python进程占用内存太多的问题 | 数据,更懂人心...
- Selenium Python3 请求头配置
- Unity3D研究院之系统内置系统图标大整理
- Unity3D研究院编辑器之5.3JSON的序列化
- Unity3D研究院编辑器之脚本打开SpritePacker窗口(十七)
- #你好Unity3D#Hierarchy视图监听gameObject点击事件
- Unity3D研究院编辑器之自定义默认资源的Inspector面板(十)
- 开源网标签
本文暂时没有评论,来添加一个吧(●'◡'●)