`

Unity3D里面的JavaScript和浏览器的JavaScript的大致区别

 
阅读更多

参考: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,表示是变量,然后写名字,后面跟冒号,冒号后面跟数据类型。
比如

复制代码 
var a:String;
写函数带的参数时也这么写,比如

复制代码 
function Test(param1: String, param2:Object){ 
        //function body 
}
做过Cocoa的朋友可能看着比较眼熟……
另外,如果直接定义了变量的类型,后面就不能改了,除非开始不定义变量类型。
比如

复制代码 
var a="test"; 
a=5;
这样就会出错。
但是如果这么写

复制代码 
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版本

    本教程主要针对Unity3D的JavaScript版本,尽管目前Unity更推荐使用C#,但了解JavaScript的语法和概念对于理解C#也有很大帮助。 ### 第一章 脚本概览 1. **常用操作**:在Unity中,JavaScript脚本用于控制游戏对象...

    Unity3d的Javascript入门

    通过这些基础知识的学习,可以帮助开发者更好地理解和掌握Unity3D中JavaScript的使用技巧,从而提高游戏开发效率。未来还可以深入学习更复杂的概念和技术,如函数、对象、类等,以实现更为复杂的游戏功能。

    Unity3D中JavaScript与C#对比

    Unity3D 中 JavaScript 与 C#对比是游戏开发和互动项目制作中一个常见的问题。许多开发者特别是新手都会纠结于到底该用哪种语言比较好。以下是老外对 Unity3D 中这两种语言进行的一个整体有效的对比。 变量声明...

    Unity3D-JavaScript基础

    **Unity3D**是一款跨平台的游戏开发工具,支持多种编程语言,包括C#、Boo和JavaScript。其中,JavaScript因其易学性和灵活性,在游戏开发领域受到了广泛的关注。尽管近年来Unity更多地转向了C#作为主要的开发语言,...

    Unity3D和HTML之间传递信息的实现

    Unity3D与HTML之间的交互主要通过两种方式实现:一是Unity3D浏览器调用HTML网页中的JavaScript函数;二是HTML网页调用Unity3D浏览器中的脚本函数。这两种方式共同构成了Unity3D与HTML之间的双向通信机制。 ##### ...

    Unity3D与Winform交互

    Unity3D是一款强大的跨平台游戏开发引擎,广泛用于制作3D和2D游戏、虚拟现实(VR)和增强现实(AR)应用。C#是Unity3D的主要编程语言,而Winform则是.NET Framework下的一个图形用户界面(GUI)框架,常用于创建桌面应用...

    WPF程序中嵌入Unity3D程序并通讯

    总之,将Unity3D嵌入到WPF程序中,不仅可以创建丰富的交互式用户体验,还能够结合WPF的强大功能和Unity3D的视觉效果。通过合理的通信机制,两个环境可以无缝协作,共同完成复杂的任务。在实际项目中,根据需求选择...

    Unity3D 游戏开发.pdf

    本书详细介绍了Unity的环境搭建、编辑器使用、GUI游戏界面等相关知识,指导读者如何使用C#和JavaScript构建游戏脚本,添加基本的游戏元素如树、草、石头等模型,以及键盘事件、鼠标事件和3D模型动画等。书中还介绍了...

    最好用的Unity内嵌浏览器插件 Embedded Browser Unity v3.1.0

    (3)可以用来Unity和JavaScript的通信 (4)可以控制网页的前进、退后、重新加载、控制缩放大小等 (5)支持Video、支持SVG (6)自定义鼠标样式 (7)可以编辑和删除Cookit (8)支持VR,比如HTC VIVE 2-3、支持...

    javascript获取浏览器临时目录

    ### JavaScript 获取浏览器临时目录知识点详解 #### 一、概述 在Web开发中,有时需要获取浏览器的临时目录以便进行文件操作或数据缓存等任务。然而,由于浏览器安全策略的限制,JavaScript直接获取本地文件系统...

    Unity3D 游戏开发 PDF完整版

    书中还涵盖了使用C#和JavaScript语言构建游戏脚本的方法,并教授了如何在游戏中添加各种模型元素,如树、草、石头等,以及如何通过键盘事件、鼠标事件和3D模型动画来丰富游戏内容。此外,书中还介绍了持久化数据的...

    Unity3D教程:CDN网络Unity网页插件使用方法2

    Unity3D 是一款强大的跨平台3D游戏引擎,它允许开发者创建高质量的3D游戏和交互式应用,并能在网页上直接运行。Unity Web Player 是一个浏览器插件,它使得用户能够在网页上无缝体验由Unity引擎制作的内容。Unity与...

    unity3d和网页数据交互的基本原理

    在浏览器中,Unity3D的加载进度条和图标可以自定义,并且可以控制是否启用右键菜单。数据交互是Unity3D与网页互动的核心,主要包含以下几种方式: 1. **Unity3D调用网页JavaScript函数**:Unity3D提供了`...

    Unity3D游戏开发

    书中的内容涵盖了Unity环境搭建、编辑器和GUI游戏界面相关的知识,紧接着是使用C#和JavaScript构建游戏脚本的详细介绍,包括如何添加基本游戏元素如树、草、石头等模型,以及键盘事件、鼠标事件和3D模型动画的创建。...

    unity3D真实汽车控制源码

    - Unity3D支持JavaScript(UnityScript)和C#两种主要的编程语言。在本项目中,js+c#的组合可能意味着部分逻辑使用了JavaScript编写,而另一部分用C#实现,这可能是为了利用两种语言的优势,比如JavaScript的快速...

    Unity 3d C#和Javascript脚本互相调用 解决方案

    在Unity 3D开发环境中,有时我们可能需要在C#脚本和JavaScript脚本之间进行交互,例如在C#中触发JavaScript函数或者反之。要实现这种互调用,需要了解Unity的编译过程以及特定的目录结构规则。下面将详细讨论如何在...

    Unity3D与web交互的方法2

    Unity3D 是一款强大的游戏开发引擎,它支持创建2D和3D的游戏,并且能够运行在多种平台上,包括Web浏览器。在Web环境下,Unity3D 通过Unity Web Player插件来实现游戏在浏览器中的运行。当涉及到Unity3D与Web页面的...

    Unity3D web插件 3D WebView for Windows and macOS Web Browser4.2

    通过与Unity的无缝集成,3D WebView不仅提供了基础的网页加载功能,还支持JavaScript交互,使得Unity对象和网页内容能够相互作用,进一步丰富了应用场景。 针对Windows和macOS两个主流操作系统,3D WebView进行了...

    Unity3D教程:Array数组类的使用(二)1

    Array 类是Unity3D中JavaScript的特定实现,它提供了丰富的函数和属性来操作数组。数组的长度可以通过 `length` 属性获取或设置,例如: ```javascript var arr = new Array(); arr.length = 2; // 设置数组长度为2...

    javascript 和 浏览器面试题

    javascript 和 浏览器面试题

Global site tag (gtag.js) - Google Analytics