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

扫一扫,访问微社区

问答求助

关注:573

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 612|回复: 7

[脚本] 萌新求教,关于AddComponent添加脚本

[复制链接]  [移动端链接]
6蛮牛粉丝
1016/1500
排名
3855
昨日变化
21

15

主题

106

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
123454
好友
0
蛮牛币
653
威望
0
注册时间
2015-9-22
在线时间
515 小时
最后登录
2019-1-22
发表于 2018-10-30 17:59:49 | 显示全部楼层 |阅读模式
10蛮牛币
萌新求教,关于AddComponent添加脚本,为防止重复添加,要如何判断物体上是否存在要添加的脚本

回复

使用道具 举报

6蛮牛粉丝
1107/1500
排名
3456
昨日变化
1

5

主题

299

帖子

1107

积分

Rank: 6Rank: 6Rank: 6

UID
234410
好友
2
蛮牛币
1118
威望
0
注册时间
2017-7-26
在线时间
367 小时
最后登录
2019-1-18
发表于 2018-10-30 17:59:50 | 显示全部楼层
二楼的代码解释
[C#] 纯文本查看 复制代码
 public static T GetOrAddComponent<T>(this GameObject go) where T : Component
    {
        T component = go.GetComponent<T>();
        if (null == component)
            component = go.AddComponent<T>();

        return component;
    }

回复

使用道具 举报

排名
18563
昨日变化
12

0

主题

11

帖子

67

积分

Rank: 2Rank: 2

UID
291534
好友
0
蛮牛币
83
威望
0
注册时间
2018-7-27
在线时间
22 小时
最后登录
2019-1-17
发表于 2018-10-30 18:27:55 | 显示全部楼层
最简单的是写个拓展方法GetOrAddComponent<T>
1,先获取组建t;
2,如果为null,就添加组建t并返回;
3,如果不为空,返回t
C#的拓展方法怎么写不用说了吧~~~~
[发帖际遇]: 一个袋子砸在了 梅晶_BZe91 头上,梅晶_BZe91 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
14536
昨日变化
10

0

主题

3

帖子

87

积分

Rank: 2Rank: 2

UID
285202
好友
0
蛮牛币
165
威望
0
注册时间
2018-6-10
在线时间
30 小时
最后登录
2018-12-2
发表于 2018-10-30 20:05:10 | 显示全部楼层
一楼的代码实现
[C#] 纯文本查看 复制代码
    public static T GetOrAddComponent<T>(this GameObject go) where T : Component {
        T component = go.GetComponent<T>() ?? go.AddComponent<T>();
        return component;
    }

回复

使用道具 举报

7日久生情
1767/5000
排名
1174
昨日变化
1

1

主题

172

帖子

1767

积分

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

UID
132507
好友
0
蛮牛币
2930
威望
0
注册时间
2015-12-24
在线时间
612 小时
最后登录
2018-11-6
发表于 2018-10-31 10:27:34 | 显示全部楼层
先获取一下,然后判断是否为空,如果为空就添加,否则直接拿来用
[发帖际遇]: pilibengpa 在论坛发帖时没有注意,被小偷偷去了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1016/1500
排名
3855
昨日变化
21

15

主题

106

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
123454
好友
0
蛮牛币
653
威望
0
注册时间
2015-9-22
在线时间
515 小时
最后登录
2019-1-22
 楼主| 发表于 2018-10-31 12:28:37 | 显示全部楼层
随幻Kaller 发表于 2018-10-30 17:59
二楼的代码解释
[mw_shl_code=csharp,true] public static T GetOrAddComponent(this GameObject go) where ...

感谢大佬

回复

使用道具 举报

6蛮牛粉丝
1016/1500
排名
3855
昨日变化
21

15

主题

106

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
123454
好友
0
蛮牛币
653
威望
0
注册时间
2015-9-22
在线时间
515 小时
最后登录
2019-1-22
 楼主| 发表于 2018-10-31 12:29:50 | 显示全部楼层
随幻Kaller 发表于 2018-10-30 17:59
二楼的代码解释
[mw_shl_code=csharp,true] public static T GetOrAddComponent(this GameObject go) where ...

感谢大佬

回复

使用道具 举报

6蛮牛粉丝
1016/1500
排名
3855
昨日变化
21

15

主题

106

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
123454
好友
0
蛮牛币
653
威望
0
注册时间
2015-9-22
在线时间
515 小时
最后登录
2019-1-22
 楼主| 发表于 2018-10-31 12:30:54 | 显示全部楼层
lu873598 发表于 2018-10-30 20:05
一楼的代码实现
[mw_shl_code=csharp,false]    public static T GetOrAddComponent(this GameObject go) w ...

感谢大佬
[发帖际遇]: 稻米熟了吗 在网吧通宵,花了 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

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

本版积分规则

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