标签:unity3d u3d unityscript javascript 游戏
UnityScript原先被官方称作用于U3D的JavaScript,但是较新一些的文档都已经叫做UnityScript了,虽然JS的语法在UnityScript中几乎都可以使用,但是UnityScript是一种具有静态类型检查且更加OOP的JS,所以完全可以把UnityScript当做一门新语言来学,当然,如果已经学会了JS,那么想学会UnityScript是相当快的。相比跑在浏览器上的JS,UnityScript无论在身为语言的设计上还是在运行能力上都要远远优于前者。
这篇快速入门教程将会着重讲解UnityScript那些与JS不太一样的地方,所以会比较适合从JS转过来并且稍微有些编程基础的编程人员,如果没有JS的基础那么建议先学一下JS,如果连编程基础也没有,那建议你还是先不要碰什么游戏引擎了~(^ ^)~
Chapter-1 严格模式
一般UnityScript源码文件的第一行都要加上
#pragma strict其实你也可以不加。加上的话会进入严格模式,这种模式会对JS超级随意的动态特性加以限制。
Chapter-2 为变量静态指定类型
UnityScript声明变量的方式和JS一样,都是用‘var 变量名‘的格式来声明变量,但是UnityScript中可以通过‘var 变量名 :类型‘的格式来为声明的变量指定明确的类型。下面是一些例子:
var num :int = 1; //整数型变量 var str :String = "hello UnityScript"; //字符串型变量 var player :GameObject; //游戏对象变量</span>
Chapter-3 函数
因为UnityScript中可以为变量明确指定数据类型,所以可以再函数中为参数指定类型,而且也可以指定一个返回值:
function Add(x :int, y :int) :int { return x + y; }如果没有返回值,可以不用在参数列表后面加任何代码。
private var self :String = "myself"; //私有变量 public function GetName() { //共有函数 return "Nonull"; }
UnityScript中的面向和Java非常相似,包括继承和实现接口时所用的关键字也一样哦。看看下面的例子就明白了:
public class Person { private var name :String; private var age :int; public function Person(name :string, age :int) { //构造函数 this.name = name; this.age = age; } public function Introduce() :String { return "my name is: " + this.name + " and I am " + this.age.ToString() + " years old."; } } public class Student extends Person { public function Student(name :String) { super(name); } //... }
接下来是接口的:
public interface People { function Speak(); function Study(); function Walk(); } public class Child implements People { public function Speak() {...} public function Study() {...} public function Walk() {...} }
有一些特定的函数是用来处理Unity中特定的事件的,比如在游戏加载时要执行什么操作,在画面帧更新的时候要执行什么操作,这些事件函数决定了脚本文件的大致执行结构,下面有一些常用的事件函数~
function Awake() { } function Start() { } function Update() { //帧更新 } function FixedUpdate() { //固定间隔的更新 }
让某段代码以Coroutine的方式运行的方式就是在这段代码的合适位置加上关键字yield,这个合适的位置由你自己决定,如果你设置了yield关键字,那么这段代码会在yield关键字处终止运行,并在合适的时候再返回到这个yield关键字所在处继续运行。下面的代码展示了如何定义Coroutine:
public function CoroutineTest() { while (true) { yield; //加上yield关键字就可以让函数以Coroutine的方式执行 } }如果要运行某个Coroutine代码段,直接像调用普通函数一样调用它就行了:
function Start() { CoroutineTest(); //自动以Coroutine方式运行并且不会阻塞画面帧的更新哦 }
Chapter-8 网络编程
UnityScript并没有自己的socket,但是因为UnityScipt以mono运行时运行,所以可以使用mono的socket。下面定义一个socket抛砖引玉一下你就明白了~
public var sock :System.Net.Sockets.Socket;
如果转载请注明出处:http://blog.csdn.net/gophers
标签:unity3d u3d unityscript javascript 游戏
原文地址:http://blog.csdn.net/gophers/article/details/38901899