【游戏技术群】959392658  【游戏出海群】12067810
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2422

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 478|回复: 30

[zhang273162308] Unity实用小工具或脚本—利用反射制作动态编辑栏(一)

[复制链接]  [移动端链接]
排名
143
昨日变化

119

主题

557

帖子

6809

积分

Rank: 9Rank: 9Rank: 9

UID
3579
好友
108
蛮牛币
4954
威望
0
注册时间
2013-9-10
在线时间
1456 小时
最后登录
2019-2-22

专栏作家社区QQ达人活力之星游戏蛮牛QQ群会员蛮牛哥

发表于 2019-1-22 18:50:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 zhang273162308 于 2019-1-23 09:13 编辑

一、前言
       在制作UI的时候,经常会碰到对不同的结构体或者类进行编辑,然后要根结构体或类的字段或属性制作对应的输入框。比如int型的输入框内就不能输入字符,就要限定输入框的类型;每个输入框还要对应字段或属性的名字。另外,不同的结构体或类的字段或属性的名字和类型都可能不一样。如果每一个结构体或类都要单独的制作一个编辑栏,每一个输入框都对应指定的字段或属性,如字段名称、类型等,无疑将是一个巨大的工作量。而且维护成本也很高,比如后续对某个结构体或者类添加或删除其中的某个字段,相应的也要手动修改编辑栏。本文就是提供一种可以实现动态创建结构体或类编辑栏输入框,根据结构体或类的字段名称、类型等进行创建可编辑的输入框。
二、实现
1、反射
    主要用的编程技巧是C#的反射功能,利用反射可以做下面的事情(C#本质论5.0第四版 472页):
1>:访问程序集中类型的元数据。其中包括像完整类型名和成员名这样的构造,以及对一个构造进行修饰的任何特性。
2>:使用元数据,在运行时动态调用一个类型的成员,而不是执行编译时绑定。
反射时指对程序集中的元数据进行检查的过程。在以前,当代码编译成一种机器语言时,关于代码的所有元数据(比如类型和方法名)都会被丢弃。相反,当C#编译成CIL时,它会维持关于代码的大部分元数据。除此之外,可以利用反射枚举程序集中的所有类型,找出满足特定条件的那些。
2、反射提取结构体中元数据信息
说了这么多理论的东西,我们就可以着手编写代码了,对结构体进行反射提取信息的代码如下:
游客,如果您要查看本帖隐藏内容请回复




上述代码中用到了一个自定义的类,UI2D_SubObjEditorAttr,代码:这段代码主要是对一个输入框和Text进行封装的类,Text显示变量的名称,如图所示:创建的单个编辑条的预设,只有一个Text和输入框
单个编辑条.png

游客,如果您要查看本帖隐藏内容请回复

3、使用方法
将定义的这两个结构体变量分别传给该方法,就可以实现根据结构体的字段自动创建该自动的编辑条,如图所示:
[mw_shl_code=csharp,true]void Update () {
               
        if(Input.GetKeyDown(KeyCode.C))
        {
           // OnCreateAttr_OnClick(curEditorRoute);
            OnCreateAttr_OnClick(curEditorRP);
        }

}

2.png

23.png



不同的结构体变量可以动态的创建不同的编辑条,并且将默认的值赋值给每个对应的编辑条。
三、总结
1、完成了初步的将不同的结构体动态的创建编辑条的功能
2、尚未根据不同字段的类型进行编辑条细化
3、编辑条的值改变没有关联到指定的结构体变量中,也即无法动态修改结构体变量的值


未完待续。。。。





回复

使用道具 举报

排名
64379
昨日变化
36

0

主题

5

帖子

28

积分

Rank: 1

UID
309391
好友
0
蛮牛币
59
威望
0
注册时间
2018-12-24
在线时间
23 小时
最后登录
2019-2-1
发表于 2019-1-23 09:18:41 | 显示全部楼层
利用反射制作动态编辑栏

回复 支持 反对

使用道具 举报

5熟悉之中
677/1000
排名
4285
昨日变化
26

1

主题

211

帖子

677

积分

Rank: 5Rank: 5

UID
245227
好友
0
蛮牛币
890
威望
0
注册时间
2017-9-21
在线时间
127 小时
最后登录
2019-2-20
发表于 2019-1-23 09:51:28 | 显示全部楼层
666666666666666666666

回复 支持 反对

使用道具 举报

5熟悉之中
677/1000
排名
4285
昨日变化
26

1

主题

211

帖子

677

积分

Rank: 5Rank: 5

UID
245227
好友
0
蛮牛币
890
威望
0
注册时间
2017-9-21
在线时间
127 小时
最后登录
2019-2-20
发表于 2019-1-23 09:58:07 | 显示全部楼层
这些看似能偷懒的东西, 最后都还是走回了手动一个个写的老路, 这么多种UI对应的数据类型你能写的完?

回复 支持 反对

使用道具 举报

7日久生情
1681/5000
排名
2133
昨日变化
5

1

主题

81

帖子

1681

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219633
好友
0
蛮牛币
1564
威望
0
注册时间
2017-4-27
在线时间
951 小时
最后登录
2019-2-23
发表于 2019-1-23 15:45:12 | 显示全部楼层
666666666666666666666

回复 支持 反对

使用道具 举报

7日久生情
1925/5000
排名
2824
昨日变化
8

2

主题

996

帖子

1925

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
209046
好友
0
蛮牛币
2665
威望
0
注册时间
2017-3-30
在线时间
411 小时
最后登录
2019-2-23
发表于 2019-1-23 16:28:23 | 显示全部楼层

回复

使用道具 举报

7日久生情
2197/5000
排名
2394
昨日变化
11

0

主题

1249

帖子

2197

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
189581
好友
0
蛮牛币
3215
威望
0
注册时间
2016-12-5
在线时间
356 小时
最后登录
2019-2-22
发表于 2019-1-23 16:37:01 | 显示全部楼层
可以的给力啊

回复

使用道具 举报

7日久生情
2193/5000
排名
601
昨日变化

1

主题

136

帖子

2193

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
43081
好友
1
蛮牛币
1524
威望
0
注册时间
2014-9-1
在线时间
680 小时
最后登录
2019-2-23
发表于 2019-1-24 08:43:54 | 显示全部楼层
nity实用小工具或脚本—利用反射制作动态编辑栏

回复 支持 反对

使用道具 举报

3偶尔光临
285/300
排名
7472
昨日变化
3

2

主题

32

帖子

285

积分

Rank: 3Rank: 3Rank: 3

UID
244534
好友
0
蛮牛币
288
威望
0
注册时间
2017-9-19
在线时间
83 小时
最后登录
2019-1-24
发表于 2019-1-24 09:02:47 | 显示全部楼层

回复

使用道具 举报

3偶尔光临
252/300
排名
9586
昨日变化
1

1

主题

40

帖子

252

积分

Rank: 3Rank: 3Rank: 3

UID
180714
好友
0
蛮牛币
273
威望
0
注册时间
2016-11-4
在线时间
95 小时
最后登录
2019-2-1
发表于 2019-1-24 13:54:50 | 显示全部楼层
利用反射制作动态编辑栏,看看学习学习

回复 支持 反对

使用道具 举报

3偶尔光临
176/300
排名
10882
昨日变化
121

0

主题

29

帖子

176

积分

Rank: 3Rank: 3Rank: 3

UID
293269
好友
0
蛮牛币
149
威望
0
注册时间
2018-8-11
在线时间
51 小时
最后登录
2019-2-23
发表于 2019-1-24 15:42:21 | 显示全部楼层
谢谢大佬的分享,希望能够多学习学习

回复 支持 反对

使用道具 举报

4四处流浪
392/500
排名
8424
昨日变化
76

0

主题

150

帖子

392

积分

Rank: 4

UID
300324
好友
0
蛮牛币
20
威望
0
注册时间
2018-10-17
在线时间
94 小时
最后登录
2019-2-23
发表于 2019-1-26 10:34:38 | 显示全部楼层
6666666666666666666666666666

回复 支持 反对

使用道具 举报

7日久生情
3294/5000
排名
127
昨日变化

0

主题

166

帖子

3294

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
6304
好友
0
蛮牛币
7580
威望
0
注册时间
2013-10-24
在线时间
738 小时
最后登录
2019-2-23
发表于 2019-1-26 17:33:50 | 显示全部楼层
啥东西,这是.

回复

使用道具 举报

6蛮牛粉丝
1467/1500
排名
1297
昨日变化
1

0

主题

190

帖子

1467

积分

Rank: 6Rank: 6Rank: 6

UID
137070
好友
0
蛮牛币
2951
威望
0
注册时间
2016-2-20
在线时间
349 小时
最后登录
2019-2-23
发表于 2019-1-28 08:59:08 | 显示全部楼层
感谢大佬分享!

回复

使用道具 举报

6蛮牛粉丝
1368/1500
排名
2107
昨日变化
9

5

主题

209

帖子

1368

积分

Rank: 6Rank: 6Rank: 6

UID
228249
好友
1
蛮牛币
3342
威望
0
注册时间
2017-6-22
在线时间
498 小时
最后登录
2019-2-22
发表于 2019-1-28 11:06:49 | 显示全部楼层
正好需要,感谢分享

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表