Unity3D里面的JavaScript和浏览器的JavaScript的大致区别
来源:互联网 发布:年会礼品 知乎 编辑:程序博客网 时间:2024/06/05 02:36
(这篇原来我是发在vrsh的)
一直想了解Unity里面的JavaScript到底是怎么回事。也问过一次四毛(在这里好像叫威阿),后来找到一篇文章讲解的比较清楚。原本想把这篇文章翻译了(好像没人翻译吧),不过主要想把自己从前对JavaScript的一些了解和Unity做一些对照,所以不打算完全翻译了,还是按自己的理解来说一下Unity中的JavaScript,还请各位多指教。那篇文章就在Unity的Wiki里,地址在这里。
不知道写这么个东西能不能给加点威望好能进那几个非开放版块……:victory:
我从前做过一点JavaScript的东西,和同事加起来大概写过将近2M的JavaScript脚本,粗看了一下Unity中的JavaScript,和从前所了解的基于Browser的JavaScript并不是太相像。可能也有不少朋友感觉Unity的JavaScript有点怪怪的,我在这里大概写下区别。
速度比较快
Unity的JavaScript是经过编译了的,按照文章所讲,在Unity中使用JavaScript、C#或者Boo的执行速度并没有什么区别。
语法略有不同
类:
在Unity里,一个js文件就是一个类。从前基于浏览器的JavaScript是通过prototype来实现类(我一直用的是prototype.js框架)。
在Unity,比如要写一个Hello的类,里面有一个方法叫sayHello,建立一个Hello.js,然后在里面写复制代码就可以了。
而从前用浏览器的JavaScript实现类,实际就是写个function,比如复制代码如果用prototype.js框架,就这么写:复制代码继承
在Unity里,这么写:
新建一个MyHello.js文件,然后写复制代码而从前基于浏览器的继承,我一般都是用prototype里的bind()方法来做。
还有虚拟函数的写法之类的,可以在那篇文章里找到。
数据类型
在Unity的JavaScript里,string叫String(S大写)。字符串必须用双引号,不能用单引号,而在从前基于浏览器的JavaScript里,单引号或者双引号随便写,也可以引号套引号。
变量必须先声明
主要可能是因为Unity里的JavaScript需要编译,所以在Unity里,变量必须事先声明才能使用,否则会出错。
变量的类型的写法
定义变量的时候,前面写var,表示是变量,然后写名字,后面跟冒号,冒号后面跟数据类型。
比如复制代码写函数带的参数时也这么写,比如复制代码做过Cocoa的朋友可能看着比较眼熟……
另外,如果直接定义了变量的类型,后面就不能改了,除非开始不定义变量类型。
比如复制代码这样就会出错。
但是如果这么写复制代码就没问题。
对象
在从前基于浏览器的JavaScript里,这么写是没问题的:复制代码不过在Unity里就完全不行,要想这么做,参考这个文章(不翻译了,都是代码)
早期Unity不支持switch()或者eval()函数
2.0之后就支持switch了,另外不建议用eval……不过我比较习惯用eval,虽然不是个好习惯。
每行后面必须写分号
基于浏览器的JavaScript里,不写分号也没什么问题,在Unity里,必须写。
不能写匿名函数
大概的意思就是不让用这种写法:复制代码我之前基于浏览器的JavaScript里总习惯这么写,因为经常会function里面套function。
不过这么写倒是可以的复制代码Math在Unity里叫Mathf
基本一样,就是后面加个小写的f。从前怎么用现在还怎么用就行了。常用的比如Math.round(),Math.ceil(),Math.floor()之类的……
调用Mono
Mono里面很多东西都可以拿来在JavaScript里用,想用就直接import:复制代码调试
可以用print()函数,也可以用Log()函数或者Debug.Log()函数。如果想设置断点,用Debug.Break()函数。
从前log这种东西还要自己写,然后显示在一个div里,现在用Unity倒是方便了。
一直想了解Unity里面的JavaScript到底是怎么回事。也问过一次四毛(在这里好像叫威阿),后来找到一篇文章讲解的比较清楚。原本想把这篇文章翻译了(好像没人翻译吧),不过主要想把自己从前对JavaScript的一些了解和Unity做一些对照,所以不打算完全翻译了,还是按自己的理解来说一下Unity中的JavaScript,还请各位多指教。那篇文章就在Unity的Wiki里,地址在这里。
不知道写这么个东西能不能给加点威望好能进那几个非开放版块……:victory:
我从前做过一点JavaScript的东西,和同事加起来大概写过将近2M的JavaScript脚本,粗看了一下Unity中的JavaScript,和从前所了解的基于Browser的JavaScript并不是太相像。可能也有不少朋友感觉Unity的JavaScript有点怪怪的,我在这里大概写下区别。
速度比较快
Unity的JavaScript是经过编译了的,按照文章所讲,在Unity中使用JavaScript、C#或者Boo的执行速度并没有什么区别。
语法略有不同
类:
在Unity里,一个js文件就是一个类。从前基于浏览器的JavaScript是通过prototype来实现类(我一直用的是prototype.js框架)。
在Unity,比如要写一个Hello的类,里面有一个方法叫sayHello,建立一个Hello.js,然后在里面写复制代码
- function sayHello(){
- // do something
- }
而从前用浏览器的JavaScript实现类,实际就是写个function,比如复制代码
- var Hello=function(){
- this.sayHello=function(){
- // do something
- }
- }
- var Hello=Class.create();
- Hello.prototype={
- initialize:function(){
- },
- sayHello:function(){
- }
- };
在Unity里,这么写:
新建一个MyHello.js文件,然后写复制代码
- class MyHello extends Hello{
- }
还有虚拟函数的写法之类的,可以在那篇文章里找到。
数据类型
在Unity的JavaScript里,string叫String(S大写)。字符串必须用双引号,不能用单引号,而在从前基于浏览器的JavaScript里,单引号或者双引号随便写,也可以引号套引号。
变量必须先声明
主要可能是因为Unity里的JavaScript需要编译,所以在Unity里,变量必须事先声明才能使用,否则会出错。
变量的类型的写法
定义变量的时候,前面写var,表示是变量,然后写名字,后面跟冒号,冒号后面跟数据类型。
比如复制代码
- var a:String;
- function Test(param1: String, param2:Object){
- //function body
- }
另外,如果直接定义了变量的类型,后面就不能改了,除非开始不定义变量类型。
比如复制代码
- var a="test";
- a=5;
但是如果这么写复制代码
- var a;
- a="test";
- a=5;
对象
在从前基于浏览器的JavaScript里,这么写是没问题的:复制代码
- var a = new Object();
- a.myField=22;
早期Unity不支持switch()或者eval()函数
2.0之后就支持switch了,另外不建议用eval……不过我比较习惯用eval,虽然不是个好习惯。
每行后面必须写分号
基于浏览器的JavaScript里,不写分号也没什么问题,在Unity里,必须写。
不能写匿名函数
大概的意思就是不让用这种写法:复制代码
- var bar=function(){}
不过这么写倒是可以的复制代码
- function foo(x){ print(x); }
- var bar = foo;
- bar("test");
基本一样,就是后面加个小写的f。从前怎么用现在还怎么用就行了。常用的比如Math.round(),Math.ceil(),Math.floor()之类的……
调用Mono
Mono里面很多东西都可以拿来在JavaScript里用,想用就直接import:复制代码
- import System;
- import System.IO;
可以用print()函数,也可以用Log()函数或者Debug.Log()函数。如果想设置断点,用Debug.Break()函数。
从前log这种东西还要自己写,然后显示在一个div里,现在用Unity倒是方便了。
0 0
- Unity3D里面的JavaScript和浏览器的JavaScript的大致区别
- Unity3D里面的JavaScript和浏览器的JavaScript的大致区别
- JavaScript里面三个等号和两个等号的区别
- JavaScript里面三个等号和两个等号的区别
- JavaScript里面三个等号和两个等号的区别
- JavaScript里面三个等号和两个等号的区别
- JavaScript里面三个等号和两个等号的区别
- JavaScript里面三个等号和两个等号的区别
- JavaScript里面三个等号和两个等号的区别
- JavaScript里面三个等号和两个等号的区别
- JavaScript里面三个等号和两个等号的区别
- javascript笔记:javascript里面不同function定义的区别
- javascript笔记:javascript里面不同function定义的区别
- javascript里面的 && 和 || 的妙用
- javascript里面的数组
- JavaScript里面的DOM和BOM
- VB和VB.NET的大致区别
- ArrayList和LinkedList的大致区别
- 动态加载 python 文件
- CODEVS-1531 山峰
- 王帅:深入PHP内核(二)——SAPI探究
- MVC模型
- Ural1089(字符串处理)
- Unity3D里面的JavaScript和浏览器的JavaScript的大致区别
- 普通模糊,动感模糊,高斯模糊算法实现
- PHP相关系列 - 优化你的PHP代码
- 用Bundle和直接用Intent.putExtra("xx",yy)传递有什么不同
- 使用 OpenSSL API 进行安全编程,第 2 部分: 安全握手
- ios&java 常用加密(二)单向加密
- "The Civil War in France" translation05
- Java语言基本语法
- 算法笔记五:利用堆结构来对数据进行排序