参考:http://keigoliye.blog.163.com/blog/static/1462133592010823105720114/?fromdm&fromSearch&isFromSearchEngine=yes
一直想了解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 } }
|
如果用prototype.js框架,就这么写:
复制代码 var Hello=Class.create(); Hello.prototype={ initialize:function(){ }, sayHello:function(){ } };
|
继承
在Unity里,这么写:
新建一个MyHello.js文件,然后写
复制代码 class MyHello extends Hello{ }
|
而从前基于浏览器的继承,我一般都是用prototype里的bind()方法来做。
还有虚拟函数的写法之类的,可以在那篇文章里找到。
数据类型
在Unity的JavaScript里,string叫String(S大写)。字符串必须用双引号,不能用单引号,而在从前基于浏览器的JavaScript里,单引号或者双引号随便写,也可以引号套引号。
变量必须先声明
主要可能是因为Unity里的JavaScript需要编译,所以在Unity里,变量必须事先声明才能使用,否则会出错。
变量的类型的写法
定义变量的时候,前面写var,表示是变量,然后写名字,后面跟冒号,冒号后面跟数据类型。
比如
写函数带的参数时也这么写,比如
复制代码 function Test(param1: String, param2:Object){ //function body }
|
做过Cocoa的朋友可能看着比较眼熟……
另外,如果直接定义了变量的类型,后面就不能改了,除非开始不定义变量类型。
比如
这样就会出错。
但是如果这么写
复制代码 var a; a="test"; a=5;
|
就没问题。
对象
在从前基于浏览器的JavaScript里,这么写是没问题的:
复制代码 var a = new Object(); a.myField=22;
|
不过在Unity里就完全不行,要想这么做,参考这个文章(不翻译了,都是代码)
早期Unity不支持switch()或者eval()函数
2.0之后就支持switch了,另外不建议用eval……不过我比较习惯用eval,虽然不是个好习惯。
每行后面必须写分号
基于浏览器的JavaScript里,不写分号也没什么问题,在Unity里,必须写。
不能写匿名函数
大概的意思就是不让用这种写法:
复制代码 var bar=function(){}
|
我之前基于浏览器的JavaScript里总习惯这么写,因为经常会function里面套function。
不过这么写倒是可以的
复制代码 function foo(x){ print(x); } var bar = foo; bar("test");
|
Math在Unity里叫Mathf
基本一样,就是后面加个小写的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倒是方便了。
分享到:
相关推荐
Unity3D中JavaScript与C#对比
文档是一则翻译的关于Unity3d的JS的教程。
javascript获取浏览器临时目录javascript获取浏览器临时目录javascript获取浏览器临时目录javascript获取浏览器临时目录
Unity3DJavaScript基础.
这是一个JavaScript获取浏览器参数的方法,
Unity 3d C#和Javascript脚本互相调用 解决方案.
JavaScript 获取浏览器的显示区域大小信息.txt JavaScript 获取浏览器的显示区域大小信息.txt JavaScript 获取浏览器的显示区域大小信息.txt JavaScript 获取浏览器的显示区域大小信息.txt
Unity3D javascript的多态脚本 Posted on 2013年04月15日 by U3d / Unity3D脚本/插件/被围观 199 次 Un
Unity3d 中文脚本参考大全能够很好的帮助开发人员完成所有的开发项目。
(3)可以用来Unity和JavaScript的通信 (4)可以控制网页的前进、退后、重新加载、控制缩放大小等 (5)支持Video、支持SVG (6)自定义鼠标样式 (7)可以编辑和删除Cookit (8)支持VR,比如HTC VIVE 2-3、支持...
主要介绍了基于JavaScript判断浏览器到底是关闭还是刷新(超准确)的相关资料,需要的朋友可以参考下
适合初学者,简单容易理解。包含了一些常见的问题与解决方案
unity3D(javascript)笔记,简要说明unity中的javasrcipt脚本使用
Unity 3D中的javascript脚本和网页设计用的javascript是有所不同的,此教程是最基本的U3D javascript入门教程
自己在网上搜集整理的Unity3D脚本教程JavaScript版本,花了不少精力,希望对大家有用
unity3d中js和C#混合调用, unity中js脚本与c#脚本互相调用
javascript解决浏览器兼容性问题
JavaScript判断浏览器类型及版本 含实例,言简意赅。 docx的文件。
javascript自定义浏览器窗口,熟练使用javaScript原理,解决窗口拖动、放大缩小、最小化、全屏的功能