查看: 4908|回复: 1
打印 上一主题 下一主题

Unity3D中JavaScript与C#对比(一)

[复制链接]

435

主题

2

听众

6371

积分

高级设计师

Rank: 6Rank: 6

纳金币
6372
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-9-5 11:56:27 |只看该作者 |倒序浏览
在使用unity3d进行游戏开发或者互动项目制作的时候,有3种编辑语言可供使用,不过用的最多的应该是javascript和c#两种语言,相信很多朋友特别是新手都会很纠结于到底该用二者种的哪一个比较好,下面是老外对unity3d中这两种语言进行的一个整体有效的对比,此为第一章节,主要对比二者在变量,类,函数等常规基础要点上的异同!



这是本系列的第一章,本章主要讨论在Unity3D引擎中使用JavaScript和C#编程是有什么不同。所有在文章里用到的脚本都可以在本系列的最后一章中下载到,那么现在我们就来看看这两种语言之间到底有什么不同。

    第 一个也是最容易区分的一点就是声明变量和方法。在JavaScript编程中,不用像C#中一样,必须声明变量或方法类型,因为JavaScript是一 种弱类型语言,在编译时他会选择最合适的类型给予定义。但是C#完全不同,它属于强类型语言,变量或方法一定要在之前定义好。或许看些例子可以让我们更好 的理解这个概念。下面是一个JavaScript的脚本:
private var cubeTransform;
在C#中,同样的代码则会是:
private Transform cubeTransform;
    这对方法同样适用,在C#中,一个方法什么值也没有返回,那么他的返回值为 void 类型,但是在JavaScript中则可以省略。

    类 的继承也是不同的。在JavaScript和C#中,方法是隐型并且不可重载,除非方法声明中添加虚拟关键字。不同的是C#只重载那些包含重载关键字的方 法。而JavaScript不需要关键词,只要重载类方法就可继承他们。我们来看一个JavaScript类继承的例子:
class Weapon extends Item  {      

//Class members and declarations

}
在C#中,同样的代码则会是:
public class Weapon : Item  {           

//Class members and declarations

}
    这 就是这两种代码的主要区别,实际上他需要定义全部的东西,像执行产出代码,访问GameObject和组件,激光投射等等。还有一些其他的不同点,比如导 入函数库的关键字(在JavaScript中用“Import”,在C#中使用“using”),但是这些声明和关键字的不同就比较容易明白了。

    所以,如果读者可以理解这些不同点,那在下面的章节中的解释也会更加容易理解。

最后提一下:在JavaScript中,即使不必要声明变量和方法类型,但是劝你最好还是定义一下。虽说编译器会试图找出你变量的类型,但是如果你没有声明,那就有可能会出现一些问题,比如:
//do this:

private var score : int;

//instead of this:

private var score;
    虽说每分钟都不停地读代码不是什么问题,但是也不要忘了,现在游戏每秒钟运行60帧,当然Unity3D也不例外,这样的话,当你的JavaScript脚本运行时就会无时无刻不在给Unity3D增加变量类型。(译者:相信这不是你所希望的结果吧...)

   

在下一章节中,将会说一下C#与JavaScript在编程时访问GameObject和组件会有什么不同。









分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

0

主题

1

听众

336

积分

设计实习生

Rank: 2

纳金币
12
精华
0

最佳新人

沙发
发表于 2013-8-9 08:57:52 |只看该作者
多写点呀!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-11 08:56 , Processed in 0.087988 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部