找回密码
 注册帐号

扫一扫,访问微社区

抢楼 抢楼 本帖为抢楼帖,欢迎抢楼! 

外文翻译 【蛮牛译馆】Unity5: API的新变化及关于脚本更新!

45
回复
15807
查看
[ 复制链接 ]
7日久生情
2974/5000
排名
4416
昨日变化

289

主题

842

帖子

2974

积分

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

UID
31044
好友
19
蛮牛币
2251
威望
0
注册时间
2014-6-24
在线时间
370 小时
最后登录
2015-3-2

蛮牛译员

2015-6-25 14:49:46 显示全部楼层 阅读模式

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

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

x
       来自官方2014-06-23新闻
       PS:这篇文章谈到了:API的新变化及关于脚本更新。其中,API的变化,有压缩成javascript文件,并更小占用空间;为常用的用户组件添加了快速组件的getters属性等等。自动脚本更新可以检测当前脚本旧的API,在征求同意后,用新的API脚本重写代码,能够减少用户负担,Unity5能更好工作。
  

1.jpg    

      As the breadth of the Unity feature set keeps on growing, and as we build it with more and more engineers at the same time, the necessity for being able to split up the product in separate modules becomes bigger and bigger.
      随着Unity的功能集在不断增长,以及同时使用它的工程师越来越多。因此,把产品分解为单独的模块进行开发的必要性,也愈来愈大。   
      
      Obviously because it is just sound engineering practice. (It’s nice that when you change something in the physics code, that your audio doesn’t break). It also gets us closer to a situation where we could ship updates to different modules at separate timelines. And it’s nice that it gets easier to work on the different components with different teams. There’s one additional reason that is much more user visible: the ability to ship a smaller game.
       在开发时,显然的,因为只是个声音工程师的习惯问题(好的情形是,当你在物理代码中变更一些程序时,你的音频不会停止。),就把我们陷入这种情况:我们不得不在不同的模块和在不同的时间点下进行更新。非常好的事是,它变得更容易与不同的团队在不同的组件间工作。此外,更多用户可察觉到的一个额外的原因是:创建占空间更小的游戏的能力。      

        Don’t use particle systems? Don’t pay for them. Don’t use rendering, Don’t pay for it. If you take a look at the WebGL demos that we posted, you can see that the entire unity engine that is converted to javascript (not manually thankfully!) clocks in at about 3mb of compressed javascript. That’s already pretty good, but we know there’s more juice to squeeze out of that. The web is still a platform where size matters a lot, and we want to bring the minimal size of a Unity published WebGL project down further. This is also true for other platforms, but at the moment, WebGL is definitely one of our more size-conscious platforms.      
       要使用粒子系统吗?不,别花钱支付它。也不要使用2D渲染吗?是,别花钱支付它。如果你看看我们已经发布的WebGL演示,你可以看到整个引擎都统一转换成javascript语言,(谢天谢地!不是机械转化。)它转化的文件压缩成javascript,大约在3MB。这种转换的空间大小已经很好了,但我们知道还可以再缩减。网络是个很看重空间大小的平台。我们想把Unity发布的WebGL项目的最小空间进一步缩小。这也适用于其他平台,但目前,WebGL绝对是我们优先选择的平台之一。

       So, with many good reasons to modularise the way we write code, test code, and ship code, we’ve started work down that path. There is still a very very long way to go, but if you don’t start you’re not going to get there either, so we started. While doing mostly non-user-visible work on this, we hit some dependencies in our API that need to be cut in order for us to proceed further in our efforts. Let’s look at that API problem:
       这样一来,有多种理由来模块化我们编写的代码,测试代码,上传代码。我们已开始在这条路上前行。还有很长的路要走,但如果你不开始前行,你就不会到那里,所以我们开始出发。虽然我们的工作,对于大多数用户是不可见的,但我们在API中涉及到的一些原因能促使我们更努力,且消除需要进一步削减的依赖关系。让我们看看API的问题:

       Many moons ago, when we started building our API, the C# code required to do something with a renderer component looked like this
       许多月之前,当我们开始构建我们的API时,所需的c#代码,需要像下述这样做个渲染器组件:
      
[C#] 纯文本查看 复制代码
void Start()
{
  Rigidbody r = (Rigidbody)GetComponent(typeof(Rigidbody));
  r.velocity = Vector3.up;
}


       We disliked the verbosity of that so much, that (in addition to making a new .NET language unityscript-aka-javascript with much less boilerplate), we also added quick component property getters for commonly used components:
       我们不喜欢那种冗长的代码,(除非做新的。.NET语言及模板文件少得多的unityscript语言,也称javascript语言),我们还为常用的用户组件添加了快速组件的getters属性。

[C#] 纯文本查看 复制代码
void Start()
{
  rigidBody.velocity = Vector3.up; //"rigidBody" calls: UnityEngine.Rigidbody UnityEngine.Component.get_rigidBody()
}


       Over time, we’ve been inconsistent in wether or not we added these quick accessors to the API for new components. For some we did, for others we didn’t, and by now it’s not clear why some components have them and others not.These accesors are also not nice for modularisation. When you modularise, you want to make sure that all the dependencies “point in one direction”.
       过去很长一段时间,我们对于是否在API中添加快速访问器作为新组件一事,意见不一致。有些我们已做,有些别人做过的我们还没有做,但现在我们还不清楚为什么有些组件有快速访问器,有些没有快速访问器。这些访问器,从模块化的角度来看,并不是很好。因为模块化时,要确保所有的依赖关系“指向一个方向”。

       It’s okay for the physics module to talk to things in the core module, but it’s not okay for the core module to talk to the physics module directly, because it might not be there.Turns out that is exactly what we have here. We have the MonoBehaviour class, which is something that we want to put in a “core” module. but it has a property getter implementation for .rigidBody that returns a RigidBody object, which should obviously live in the physics module, that the core module shouldn’t be able to reference.
       物理模块交互在核心模块中是可以的,但核心模块直接交互在物理模块上是不可以的。因为核心模块不能在那交互。上述那些就是经过结论证明出来的观点。我们有想把核心模块放入其中的MonoBehaviour类,但它需用属性获取器去实现。另外,RigidBody返回一个显然应该在物理模块中表现的,且不能在核心模块中引用的RigidBody对象。

       For Unity5, we decided to bite the bullet, and remove all the quick component property getters with the exception of.transform (since that one belongs in the core module, there’s no need for it to go, and it’s also by far the most used one) [1][2]
        对于Unity5,我们忍着痛,决定移除所有除transform组件中的属性获取器以外的全部快速组件。transform组件(因为其属于核心模块,没有必要把它移除,也是到目前为止最常使用的组件。)[1][2]

        As I wrote in a previous post, one of the hardest things of making Unity is finding the balance between “making things better” and “not breaking projects that already work”. Since we feel that modularisation is very important in the long run, we decided to remove the .rigidBody style accessors, but we were not comfortable with the amount of pain that would bring our users. So we embarked on a project to reduce the user pain introduced by this work: Automatic Script Updating
       正如我在以前的文章中写过,最难做的事情之一是在”把事情做更好”和“不中断已完成工作的项目”中找到一种平衡。从长远来看,因为我们觉得模块化是非常重要的,所以我们决定移除rigidBody风格的访问器,但我们并不清楚移除它们会带给我们的用户多少苦楚。所以我们开始了一个项目,通过这项工作减少用户苦楚:自动脚本更新。

       Unity5 will ship with (unless something really bad happens) the ability to detect when your scripts use old API, and is able to, after asking for your permission, rewrite that code to use the new API. So if you have a script that does this:
       Unity5(除非有极其糟糕的情况发生)有能力来检测当脚本使用旧的API时,在征求您的许可后, 使用新的API重写代码。因此如果你有个像这样的脚本:

[C#] 纯文本查看 复制代码
void Start()
{
  rigidBody.velocity = Vector3.up;
}


       We will convert that for you to:
       我们将为你转换成:

[C#] 纯文本查看 复制代码
void Start()
{
  GetComponent<Rigidbody>().velocity = Vector3.up;
}


      The script updaters work for C#, UnityScript-aka-Javascript, Boo, and prebuilt .dll assemblies. (We actually read the IL code inside the prebuilt assemblies using the wonderful Cecil library by Jb Evain of UnityVS fame, detect usages of deprecated API, and then rewrite the IL code to use the new API instead).
      为c#、Javascript、 Boo完成脚本更新工作,并预先构建.dll动态链接库。(实际上,我们使用UnityVS公司中由有名气的Jb Evain研发的Cecil library来读取预先构建的动态链接库内的IL代码,并检测弃用的API的用法,然后用新的API重写IL代码)。

       Perhaps unsurprisingly the feedback from early Unity5 testers was “hey, there is a script updater now, and it fixed all my quick property accessors, but there are more API changes you guys did that it did not fix”, and we find ourselves in the kind of good problem to have situation where it looks like the updaters work well enough that it makes sense to look at the more minor API changes that we’ve done and see which ones of those we can update reliably, and which ones we cannot.
        或许,其在早期Unity5测试者中的反馈,是意料之中的。就像这种情况,“嘿,现在有一个脚本更新器,它完成了我所有快速属性访问器,但有更多你伙计做好但还没安装的API变化”,我们发现完成的还不是特别糟糕,并到了这种情况:,它看起来像更新工作做的足够好,从而有意义去做更小的我们已经做的API更新,并测试哪些API是可以稳妥地更新,哪些不能更新。

       Maybe one day we could even open this up to asset store vendors, and allow them to provide “rewrite rules”, so that they also gain increased flexibility in improving API, fixing old mistakes while keeping user pain at a minimum. Should you have become accustomed to the component accessors to the point that you really really want to keep them anyway, it’s trivial to write a MyMonoBehaviour class with all these properties in it, that you make all your scripts derive from.
      也许有一天我们甚至可以开办个为Asset Store服务的卖家,并提供给他们“重写规则”,以至于他们也在改善API中获得灵活性的提高,修理旧的错误的同时让用户苦恼最小化。你应该已习惯了组件访问器吧,在某种程度上,你真想无论如何也要保留它们。而编写一个源自于你脚本中且有全部这些属性的MyMonoBehaviour类,是轻而易举的。

       We hope this approach strikes a good balance between not putting too much work on the plate of our users, while still being able to improve API, fix mistakes, and make Unity better.
      Bye, Lucas (@lucasmeijer)
      最后,我们希望这种方法能在不给我们的用户太多工作负担和同时还能够提高API、修复错误、Unity能更好工作之间保持好的平衡。
      再见,Lucas (@lucasmeijer)

备注:
       [1] An alternative approach would have been to introduce extension methods. This is basically the physics module being able to add additional methods to the MonoBehaviour class. This would mean user code would have to change from
     【1】另一种想要介绍的方法是扩展方法。它基本原理是在物理模块上能添加额外的方法到MonoBehaviour类。这意味着用户代码将不得改变。

[C#] 纯文本查看 复制代码
.rigidBody

to
更改为
[C#] 纯文本查看 复制代码
.RigidBody()


      We felt that was hard that was not a very attractive alternative. Hopefully one day C# gets extension properties. Should those have existed, we would have been able to keep source-level compatibility and still move the rigidBody code out into its own module.
      我们觉得很难,并不是个非常有吸引力的选择。希望有一天,c#有扩展属性。那些应该有的属性,我们将仍能保持源代码级别的兼容性和转移rigidBody代码到我们已有的模块。

      [2] in Unity5 we also cache the transform component on the c# side, so there should no longer be a performance reason to cache the transform component yourself.
    【2】在Unity5中,我们也在c#中缓存转换组件。所以不应再有个为执行缓存转换组件而设立的理由。


       我是游戏蛮牛蛮牛译馆(一个专门翻译国外资料的组织)的一员,从今天开始,我会陆续整理,翻译国外Unity相关的新闻资讯与技术文章,以及各种视频等内容。我们也欢迎热爱游戏翻译的好友加群,一起体验翻译并分享乐趣,QQ群号:52677537。关于此篇文章翻译有错误的地方,欢迎大家指正。

        蛮牛译馆期待您的加入:http://www.unitymanual.com/thread-18236-1-1.html

unity3d5.0api下载;unity minimum api level;unity5 动态添加脚本;unity3d 5 api;unity api compatibility level 关闭;unity4工程升级到unity5;unity5 变化;unity5.1.2 用;unity5安装方法;unity5.3 粒子;unity move 2d object;unity5 c;unity rigidbody velocity;unity5.4 webgl;unity5 粒子系统;unity5.;unity5 比较好;unity5.1是什么;unity5.3.4;unity5.1.0;unity5.1;unity5.1.1;unity5自带;unity5.3 4.0;4和unity5;unity5.3.1;unity5.3 5.2;unity5.3;unity5.2.0;unity5.1.2;unity5.2;unity5.3.0;unity5.0怎么使用;unity5.1.3;unity5.0.2;unity5.1.2有什么用;unity5.3 问题;unity5.3和5.2;unity5.0安装方法;unity5 粒子;unity 2d move object;unity5 c#;unity5 c#脚本大全;unity rigidbody.velocity;unity5和webgl;unity5.3 粒子系统;unity5.2 粒子系统;unity5.0 粒子系统;unity5.1网络功能;unity5.3 api;unity5的api;unity引擎 花钱;unity5 unityvs;unity5.2 unityvs
参与人数 3鲜花 +5 收起 理由
772169737 + 1
sosan + 1
lxy2013 + 3 赞一个!

查看全部评分总评分 : 鲜花 +5

回复

使用道具 举报

排名
3221
昨日变化

21

主题

138

帖子

1047

积分

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

UID
313
好友
10
蛮牛币
5058
威望
0
注册时间
2013-6-13
在线时间
233 小时
最后登录
2016-6-23

游戏蛮牛QQ群会员活力之星

2015-6-25 15:02:24 显示全部楼层
顶一个,但感觉直译过来稍微有点生硬,希望改进,加油哈

点评

嗯, 楼主还要加油, 不断完善进度....  发表于 2014-6-25 15:20
回复

使用道具 举报

4四处流浪
494/500
排名
4416
昨日变化

0

主题

52

帖子

494

积分

Rank: 4

UID
2640
好友
0
蛮牛币
662
威望
0
注册时间
2013-8-26
在线时间
110 小时
最后登录
2020-2-16
2015-6-25 15:04:52 显示全部楼层
虽然有些地方比较像google翻译,不过还是赞一个

点评

嗯, 比谷歌翻译稍微好一些... 分享最终重要... 也希望大家都参与进来...  发表于 2014-6-25 15:21
回复

使用道具 举报

7日久生情
2523/5000
排名
844
昨日变化

13

主题

709

帖子

2523

积分

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

UID
1121
好友
10
蛮牛币
5477
威望
0
注册时间
2013-7-22
在线时间
371 小时
最后登录
2019-9-10

活力之星

2015-6-25 15:05:51 显示全部楼层
支持一下吧。。。

点评

很活跃的你...  发表于 2014-6-25 15:21
回复

使用道具 举报

排名
17817
昨日变化

1

主题

21

帖子

70

积分

Rank: 2Rank: 2

UID
28288
好友
1
蛮牛币
151
威望
0
注册时间
2014-6-5
在线时间
12 小时
最后登录
2019-9-3
2015-6-25 15:06:18 显示全部楼层
读到第一段我也感觉好生硬

点评

嗯, 估计需要再理解下.... 下次楼主需要再细致的整理, 更加的易读...  发表于 2014-6-25 15:22
回复

使用道具 举报

4四处流浪
444/500
排名
4567
昨日变化

1

主题

41

帖子

444

积分

Rank: 4

UID
6745
好友
0
蛮牛币
1092
威望
0
注册时间
2013-10-30
在线时间
80 小时
最后登录
2018-8-12
2015-6-25 15:11:11 显示全部楼层
翻译国外最新新闻及技术文章,视频》》这个很不错  虽然翻译还需要努力,但是这个计划必须赞一个

点评

嗯, 希望更多的人参与进来....  发表于 2014-6-25 15:22
回复

使用道具 举报

5熟悉之中
634/1000
排名
5714
昨日变化

6

主题

100

帖子

634

积分

Rank: 5Rank: 5

UID
5349
好友
1
蛮牛币
2180
威望
0
注册时间
2013-10-10
在线时间
296 小时
最后登录
2020-2-5
2015-6-25 15:13:47 显示全部楼层
太马虎了~~

点评

嗯 , 还有待提高...  发表于 2014-6-25 15:23
回复

使用道具 举报

排名
1655
昨日变化

0

主题

80

帖子

1115

积分

Rank: 12Rank: 12Rank: 12

UID
2452
好友
5
蛮牛币
1615
威望
0
注册时间
2013-8-22
在线时间
254 小时
最后登录
2019-12-13

认证开发者

2015-6-25 15:16:49 显示全部楼层
                     

点评

跳吧~~  发表于 2014-6-25 15:23
回复

使用道具 举报

排名
2981
昨日变化

37

主题

380

帖子

1390

积分

Rank: 9Rank: 9Rank: 9

UID
2621
好友
21
蛮牛币
9280
威望
0
注册时间
2013-8-26
在线时间
255 小时
最后登录
2020-2-22

专栏作家游戏蛮牛QQ群会员蛮牛哥

2015-6-25 15:17:00 显示全部楼层
0.0  支持!

点评

有小蛮牛支持真好~~  发表于 2014-6-25 15:23
回复

使用道具 举报

7日久生情
3208/5000
排名
2551
昨日变化

76

主题

480

帖子

3208

积分

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

UID
3573
好友
74
蛮牛币
17244
威望
0
注册时间
2013-9-10
在线时间
529 小时
最后登录
2019-6-12

游戏蛮牛QQ群会员蛮牛哥活力之星

2015-6-25 15:21:13 显示全部楼层
比我厉害多了0v0

点评

谦虚可耻...  发表于 2014-6-25 16:01
回复

使用道具 举报

7日久生情
2354/5000
排名
404
昨日变化

0

主题

166

帖子

2354

积分

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

UID
6206
好友
4
蛮牛币
710
威望
0
注册时间
2013-10-23
在线时间
534 小时
最后登录
2019-4-2
2015-6-25 16:25:34 显示全部楼层
把站长扛回家,嗯,对的,干巴爹!
回复

使用道具 举报

7日久生情
4315/5000
排名
998
昨日变化

46

主题

2302

帖子

4315

积分

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

UID
8316
好友
30
蛮牛币
6083
威望
0
注册时间
2013-11-18
在线时间
733 小时
最后登录
2020-2-10

活力之星

QQ
2015-6-25 17:30:56 显示全部楼层
很羡慕啊!大力支持各位翻译工作者,各位辛苦了
回复

使用道具 举报

7日久生情
2523/5000
排名
844
昨日变化

13

主题

709

帖子

2523

积分

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

UID
1121
好友
10
蛮牛币
5477
威望
0
注册时间
2013-7-22
在线时间
371 小时
最后登录
2019-9-10

活力之星

2015-6-25 17:39:54 显示全部楼层

随便逛逛嘛。。。
回复

使用道具 举报

3偶尔光临
186/300
排名
25425
昨日变化

0

主题

72

帖子

186

积分

Rank: 3Rank: 3Rank: 3

UID
718
好友
0
蛮牛币
505
威望
0
注册时间
2013-7-8
在线时间
98 小时
最后登录
2018-5-31
2015-6-25 18:03:06 显示全部楼层
好福利!!!!
回复

使用道具 举报

3偶尔光临
278/300
排名
7088
昨日变化

0

主题

65

帖子

278

积分

Rank: 3Rank: 3Rank: 3

UID
26710
好友
3
蛮牛币
855
威望
0
注册时间
2014-5-26
在线时间
29 小时
最后登录
2016-6-10
QQ
2015-6-25 18:44:25 显示全部楼层
对于像偶一样四六级还没过的孩纸太有帮助了~~~
回复

使用道具 举报

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

本版积分规则