速度比较快
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版本,尽管目前Unity更推荐使用C#,但了解JavaScript的语法和概念对于理解C#也有很大帮助。 ### 第一章 脚本概览 1. **常用操作**:在Unity中,JavaScript脚本用于控制游戏对象...
通过这些基础知识的学习,可以帮助开发者更好地理解和掌握Unity3D中JavaScript的使用技巧,从而提高游戏开发效率。未来还可以深入学习更复杂的概念和技术,如函数、对象、类等,以实现更为复杂的游戏功能。
Unity3D 中 JavaScript 与 C#对比是游戏开发和互动项目制作中一个常见的问题。许多开发者特别是新手都会纠结于到底该用哪种语言比较好。以下是老外对 Unity3D 中这两种语言进行的一个整体有效的对比。 变量声明...
**Unity3D**是一款跨平台的游戏开发工具,支持多种编程语言,包括C#、Boo和JavaScript。其中,JavaScript因其易学性和灵活性,在游戏开发领域受到了广泛的关注。尽管近年来Unity更多地转向了C#作为主要的开发语言,...
本书详细介绍了Unity的环境搭建、编辑器使用、GUI游戏界面等相关知识,指导读者如何使用C#和JavaScript构建游戏脚本,添加基本的游戏元素如树、草、石头等模型,以及键盘事件、鼠标事件和3D模型动画等。书中还介绍了...
(3)可以用来Unity和JavaScript的通信 (4)可以控制网页的前进、退后、重新加载、控制缩放大小等 (5)支持Video、支持SVG (6)自定义鼠标样式 (7)可以编辑和删除Cookit (8)支持VR,比如HTC VIVE 2-3、支持...
### JavaScript 获取浏览器临时目录知识点详解 #### 一、概述 在Web开发中,有时需要获取浏览器的临时目录以便进行文件操作或数据缓存等任务。然而,由于浏览器安全策略的限制,JavaScript直接获取本地文件系统...
Unity3D是一款强大的跨平台游戏开发引擎,广泛用于制作2D和3D游戏...通过以上步骤和知识点,你可以成功地将Unity3D项目导出为WebGL,让更多用户在浏览器中享受你的3D作品。记得持续优化和测试,以提供最佳的用户体验。
在Unity3D中,JavaScript(也称为JS或者UnityScript)是一种常用的编程语言,用于编写游戏逻辑和控制游戏对象的行为。本教程将深入介绍如何在Unity3D中使用JavaScript,特别是如何处理用户输入、对象的位置和旋转,...
Unity3D 是一款强大的游戏开发引擎,它支持创建2D和3D的游戏,并且能够运行在多种平台上,包括Web浏览器。在Web环境下,Unity3D 通过Unity Web Player插件来实现游戏在浏览器中的运行。当涉及到Unity3D与Web页面的...
Array 类是Unity3D中JavaScript的特定实现,它提供了丰富的函数和属性来操作数组。数组的长度可以通过 `length` 属性获取或设置,例如: ```javascript var arr = new Array(); arr.length = 2; // 设置数组长度为2...
Unity 3D是一款强大的跨平台游戏开发引擎,它支持多种编程语言,其中之一就是JavaScript,也称为UnityScript。在Unity中,JavaScript被用于编写游戏逻辑、交互性和其他功能,但与传统的Web开发JavaScript...
javascript 和 浏览器面试题
Unity内嵌浏览器(Embedded Browser)是Unity引擎提供的一项功能,允许开发者在游戏或应用程序中集成一个Web浏览器组件。这个组件可以用来展示网页内容、实现在线交互或者作为游戏内的信息展示平台。Embedded ...
总的来说,UniWebview for Unity3D提供了一种强大且灵活的方式,让开发者能够充分利用HTML5和JavaScript的便利性,同时结合Unity3D的3D渲染和物理模拟能力,创建出内容丰富、交互性强的应用和游戏。无论你是想为游戏...
Unity是一款强大的跨平台游戏开发引擎,它支持创建2D、3D、VR和AR等多种类型的游戏及交互式体验。在Android设备上,开发者可以利用Unity的WebGL技术将游戏或应用发布为网页形式,以便在浏览器中运行。本文将详细探讨...
此版本的插件为v3.1.0,相较于早期版本2.1.0,在功能上进行了优化和增强,使开发者能够更便捷地实现在Unity3D项目中嵌入浏览器的功能。 #### 主要功能特点 1. **网页交互**:通过该插件可以在Unity项目中嵌入一个...
Unity3D是一款强大的跨平台游戏开发引擎,广泛应用于游戏...通过以上步骤,你可以将网页功能无缝集成到Unity3D应用中,提升用户体验,同时利用Unity的强大功能和内嵌浏览器的便捷性,创造出更多互动丰富的应用程序。
这篇笔记主要涉及了在Unity3D中使用JavaScript进行脚本编写的一些基础概念和关键知识点。 首先,我们来看变量的声明。在Unity3D的JavaScript中,变量的声明通常以`var`开头,接着是变量名,然后是类型声明。例如: ...
JavaScript 作为前端开发的主要语言,可以通过编写 JavaScript 程序来判断浏览器的类型和版本。 浏览器类型的判断可以通过两种方式来实现,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的 ...