开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

蛮牛译馆

关注:544

当前位置:游戏蛮牛 技术专区 蛮牛译馆

查看: 3563|回复: 58

[DevTips] Unity中可以让工作变得更轻松的技巧

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

187

主题

224

帖子

1275

积分

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
159865
好友
9
蛮牛币
2915
威望
0
注册时间
2016-8-1
在线时间
586 小时
最后登录
2017-7-19

蛮牛译员

发表于 2017-3-22 14:24:12 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 manew_JR 于 2017-3-22 14:25 编辑

Unity中可以让工作变得更轻松的技巧

你是不是曾经很多次因为要重复性的做一件事而感觉无聊或者失望,或许经常回这样…但是你不用再担心了!

比尔盖茨曾说过:“我选择做一个高难度工作的懒汉。因为一个懒人会选择用最简单的方式去工作。”

同时你可能会问为什么我要举这样一个例子?因为我要给你介绍一种懒人方法。


那么开始吧
我们想出这个方法的主要原因事实上是希望通过设计让我们变成了“懒汉”,我们不用再每个任务中重复同样的工作。所以,我们想到用工具和诀窍来让我们的生活变得更轻松,我们也同时希望它可以帮助到你!

下面是在Unity里面排在前十位最有效的方法:

第一, 改变你编辑的模型颜色
你是否常常在某一个点上反复调整你的游戏设计?又或者你发现你仅仅是按了暂停键然后所有你之前做的工作都没有了?当然这在unity经常发生。但是你一定不会忘记这样的情况,而且它不会只发生一次。

其实最简单有效的提醒自己的方法就是在play mode下去改变editor的play mode颜色。它在Unity菜单下的Preferences的colors里,然后在playmode tint color里把它的颜色调一个最亮的颜色就可以了。
01.png

第二 让代码自己写
有很多工具可以拓展你的IDE,其中还有一些小技巧来辅助你。其中一个拓展工具就是JetBrains Resharper,这个软件十分实用,你在做任何编程的时候都可以用到。

这个工具会分解你的代码,然后再编写代码。它还可以帮你找出bug。它甚至可以帮你修正你的bug.虽然不一定所有都行得通,但是常规的bug还是没问题的。

如果你是个程序猿,这个工具一定会帮到你。

举几个例子
• Converting code to Linq:

02.gif

• Converting code from Linq:

03.gif

• Adding missing usings:

04.gif

• Generating methods:

05.gif

可以到官网下载

第三 优化你的创建通道

当你在生成一个新的app或者游戏时,你可能需要创建很多次builds来测试。每一个build会生成好几分钟,甚至是好几个小时。这其实是在影响你的工作效率。

所以为了能让这个生成过程节省很多时间,我们会建议你的项目最好是适中大小的文件,那么它一般在环境下会生成20分钟左右,而在ios环境下是一个小时左右。这样的话,你在每天生成一个build时间就可以降低到最低。那么,我们计算下时间,它一个月(大概是20个工作日除掉周六日)会花费掉你的时间是:Android环境下至少6个小时40分钟,ios是至少40小时。那么这样算下来你的时间比造一个第一架登陆月球的航天飞行器(luna1 制造于1959年) 时间还要多!它用了36小时!好吧,那如何来节省这些时间呢?用外部的辅助工具可以帮你来生成build.

之前曾经一度流行Jenkins这个外部插件。它有很多灵活的功能。同时,它可以给你最基本的无限制的方法来设置你的创建通道,举例:

一 新任务中可查看资源库
二 解析代码
三 创建build
四 完成后,可发送build文件到FTP服务器上
五 发送build报告及相关文件链接邮件

工具栏还有很多其他的选项,而且如果你需要更多功能,你可以自己再加进去。而且它全部是免费的!所以你只需要登陆它的官网下载安装就可以了。

另外一个工具是unity自带的工具叫Unity Cloud Builds。它的集成稳定行更高一些,在它的编辑栏中你基本上可以设置任何你需要的功能。像jenkins,它同样也是免费的,不过unity订阅你的builds可以更好地优化同时运行速度也会更快。
另外,unity会关联到你的build用来下载你的文件或者分享给其他人。

More about Unity Cloud Builds: https://unity3d.com/services/cloud-build

那么这两个软件有什么不同呢?第一个是开源的而且有一个非常大的plugins资源库可以用来安装,例如,你可以把slack整合进3rd party APIs 里,或者用任何方式来配置你的工具栏,并且提供设置你自己build通道的可能。而unity cloud则仅仅可以在unity框架内使用,你也没法加载其他东西在里面。当然,你也可以设置slack中的桌面提醒,来提醒unity cloud或者 webhooks的信息,但是仅此而已。而它的优势则在于直截了当,而且非常容易设置以及操作。

那么哪一个是你最想要使用的呢?如果你仅仅是需要一些简单的要求,那么直接下载unity cloud builds就可以了,如果你还需要在配置选项中,增加更高级的命令那么就选择jenkins.

第四,用方便的方式存储你的数据

很多人会把数据放在scene或者hardcore的对象里。这种方法常常会让你很难发现在生成一个想要得到的结果时,你哪里仍然需要调整。

但是现在有两种非常好的方法帮你来存储数据:
1 test asset, 它可以是json, excel 文件或者是任何形式的文字形式。主要问题点是在这样的文件中你只需要输入字体,然后创建一个解析器来帮你阅读这个文件,并且得到你的数据。
2 创建scriptableobject. 这个方法更加有效和方便。你可以把他们放在任何你想要的地方,例如像Text, numbers, textures, material, models等等。 而且最重要的是你可以像其他asset一样用它,并且像得到一个变量一样容易的去读取数据。

以下是一个关于ScriptableObject代码的案例:

[C#] 纯文本查看 复制代码
using UnityEngine;

[CreateAssetMenu(fileName = "NewWeapon", menuName = "Weapon")]
public class WeaponData : ScriptableObject
{
   public string displayName;
   public float damage;
   public float reloadTime;
}


通过这些代码你可以像很多 WeaponData 对象一样很容易创建你想要的代码

06.png

第五 自动关联
创建UI通常是最令人烦恼的事,因为大多数情况下你有很多脚本,他们需要更多你自己必须要手动的参考对象。如果所有的这些参考对象文件能自己加载那该有多好。
那么下面有一种方法可以做到:

[C#] 纯文本查看 复制代码
using System.Linq;
using UnityEngine;

public class AutoReferencer<T> : MonoBehaviour where T : AutoReferencer<T> {

   #if UNITY_EDITOR
   // This method is called once when we add component do game object
   protected new virtual void Reset()
   {
       // Magic of reflection
       // For each field in your class/component we are looking only for those that are empty/null
       foreach (var field in typeof(T).GetFields().Where(field => field.GetValue(this) == null))
       {
           // Now we are looking for object (self or child) that have same name as a field
           Transform obj;
           if (transform.name == field.Name)
           {
               obj = transform;
           }
           else
           {
               obj = transform.Find(field.Name); // Or you need to implement recursion to looking into deeper childs
           }

           // If we find object that have same name as field we are trying to get component that will be in type of a field and assign it
           if (obj!=null)
           {
               field.SetValue(this, obj.GetComponent(field.FieldType));
           }
       }
   }
   #endif
}


07.png

08.png

所有的都可以被自动加载!

总结
以上五种方法希望可以帮助你从繁碎的生成unity对象的过程中解脱出来,并且提高工作效率。 我会在接下来的一个章节中添加其他的方法,所以尽情关注之后的更新。你可以订阅我们的newsletter.




原文标题:Things you can do better in Unity!
原文链接http://blog.theknightsofunity.com/optimize-part-1/





       蛮牛译林军福利多多哦!

扫描下方二维码关注游戏蛮牛官方微信~每日都有精选干货与你分享呦~
155547iluo7umxezrb2ekr.png








评分

参与人数 6鲜花 +17 收起 理由
风戏凤 + 2 很给力!
沐__ + 1 很给力!
小枫小 + 2 很给力!
nowhyz1234 + 5 很给力!
niugg413 + 5 很给力!
时光恋流年 + 2

查看全部评分

本帖被以下淘专辑推荐:


回复

使用道具 举报

5熟悉之中
691/1000
排名
5364
昨日变化

0

主题

373

帖子

691

积分

Rank: 5Rank: 5

UID
156480
好友
0
蛮牛币
1097
威望
0
注册时间
2016-7-12
在线时间
132 小时
最后登录
2017-7-21
发表于 2017-3-22 15:55:33 | 显示全部楼层
666666666666

回复

使用道具 举报

6蛮牛粉丝
1378/1500
排名
1135
昨日变化
1

8

主题

204

帖子

1378

积分

Rank: 6Rank: 6Rank: 6

UID
37654
好友
2
蛮牛币
2673
威望
0
注册时间
2014-8-2
在线时间
298 小时
最后登录
2017-7-19
发表于 2017-3-22 18:19:12 | 显示全部楼层
666666666666666666666666666

回复 支持 1 反对 0

使用道具 举报

排名
26392
昨日变化
8

0

主题

15

帖子

36

积分

Rank: 1

UID
155442
好友
0
蛮牛币
1
威望
0
注册时间
2016-7-6
在线时间
14 小时
最后登录
2017-3-23
发表于 2017-3-22 20:30:10 | 显示全部楼层
轻松开发

回复

使用道具 举报

5熟悉之中
507/1000
排名
3858
昨日变化
21

4

主题

70

帖子

507

积分

Rank: 5Rank: 5

UID
127539
好友
0
蛮牛币
2563
威望
0
注册时间
2015-11-1
在线时间
157 小时
最后登录
2017-7-23
QQ
发表于 2017-3-22 22:39:29 | 显示全部楼层
很不错的建议

回复

使用道具 举报

6蛮牛粉丝
1267/1500
排名
2423
昨日变化
10

1

主题

464

帖子

1267

积分

Rank: 6Rank: 6Rank: 6

UID
171030
好友
4
蛮牛币
1528
威望
0
注册时间
2016-9-22
在线时间
340 小时
最后登录
2017-7-24

活力之星

发表于 2017-3-23 02:16:40 来自Mobile--- | 显示全部楼层
必须收藏,懒人的最高境界

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1413/1500
排名
1358
昨日变化

26

主题

200

帖子

1413

积分

Rank: 6Rank: 6Rank: 6

UID
124569
好友
24
蛮牛币
6886
威望
0
注册时间
2015-10-4
在线时间
503 小时
最后登录
2017-7-13
发表于 2017-3-23 09:38:24 | 显示全部楼层
66666666666666666666666

回复 支持 反对

使用道具 举报

4四处流浪
402/500
排名
4928
昨日变化

0

主题

96

帖子

402

积分

Rank: 4

UID
189765
好友
0
蛮牛币
1227
威望
0
注册时间
2016-12-5
在线时间
102 小时
最后登录
2017-7-21
发表于 2017-3-23 09:38:47 | 显示全部楼层
很强势很强势很强势很强势很强势

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1149/1500
排名
1912
昨日变化
1

1

主题

346

帖子

1149

积分

Rank: 6Rank: 6Rank: 6

UID
56496
好友
0
蛮牛币
3123
威望
0
注册时间
2014-11-19
在线时间
264 小时
最后登录
2017-7-21
发表于 2017-3-23 09:55:42 | 显示全部楼层
keep countinue
[发帖际遇]: hsGuy929 乐于助人,奖励 3 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

7日久生情
1579/5000
排名
16285
昨日变化
5

2

主题

1340

帖子

1579

积分

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

UID
185807
好友
0
蛮牛币
1978
威望
0
注册时间
2016-11-22
在线时间
213 小时
最后登录
2017-7-23
发表于 2017-3-23 10:24:57 | 显示全部楼层
赞,不错不错,谢谢分享
[发帖际遇]: 东坡肘子2010 发帖时在路边捡到 1 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

5熟悉之中
595/1000
排名
3539
昨日变化

0

主题

180

帖子

595

积分

Rank: 5Rank: 5

UID
179635
好友
1
蛮牛币
851
威望
0
注册时间
2016-10-31
在线时间
113 小时
最后登录
2017-7-22
发表于 2017-3-23 10:42:48 | 显示全部楼层

水电费撒地方阿斯顿发送到
[发帖际遇]: 零点盛夏 在论坛发帖时没有注意,被小偷偷去了 1 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

5熟悉之中
595/1000
排名
3539
昨日变化

0

主题

180

帖子

595

积分

Rank: 5Rank: 5

UID
179635
好友
1
蛮牛币
851
威望
0
注册时间
2016-10-31
在线时间
113 小时
最后登录
2017-7-22
发表于 2017-3-23 11:47:36 | 显示全部楼层
零点盛夏 发表于 2017-3-23 10:42
水电费撒地方阿斯顿发送到

阿斯蒂芬阿斯顿发

回复 支持 反对

使用道具 举报

4四处流浪
417/500
排名
3903
昨日变化
25

0

主题

43

帖子

417

积分

Rank: 4

UID
124544
好友
0
蛮牛币
947
威望
0
注册时间
2015-10-4
在线时间
104 小时
最后登录
2017-7-23
发表于 2017-3-23 11:53:12 | 显示全部楼层
666666666666666666666666666

回复 支持 反对

使用道具 举报

5熟悉之中
625/1000
排名
3932
昨日变化
4

1

主题

109

帖子

625

积分

Rank: 5Rank: 5

UID
180106
好友
0
蛮牛币
931
威望
0
注册时间
2016-11-2
在线时间
247 小时
最后登录
2017-7-20
QQ
发表于 2017-3-23 13:43:38 | 显示全部楼层
66666666666666666666666666666666666666666

回复 支持 反对

使用道具 举报

4四处流浪
341/500
排名
6925
昨日变化
4

0

主题

69

帖子

341

积分

Rank: 4

UID
21210
好友
2
蛮牛币
494
威望
0
注册时间
2014-4-13
在线时间
143 小时
最后登录
2017-6-12
发表于 2017-3-23 13:56:29 | 显示全部楼层
R#用了好多快捷键,并不知道是啥啊?自动联想?

回复 支持 反对

使用道具 举报

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

本版积分规则

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