您的位置:首页 > 移动开发 > Unity3D

UnityScript快速入门

2014-08-28 19:33 375 查看
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;                    //游戏对象变量


Chapter-3 函数

因为UnityScript中可以为变量明确指定数据类型,所以可以再函数中为参数指定类型,而且也可以指定一个返回值

function Add(x :int, y :int) :int {
return x + y;
}
如果没有返回值,可以不用在参数列表后面加任何代码。

Chapter-4 访问控制
UnityScript允许像C++/Java那样通过添加privatepublic关键字来设置变量、类或函数的访问控制权限(也叫对外可见性),例如:

private var self :String = "myself";   //私有变量
public function GetName() {            //共有函数
return "Nonull";
}

Chapter-5 面向对象和接口

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() {...}
}

Chapter-6 事件函数

有一些特定的函数是用来处理Unity中特定的事件的,比如在游戏加载时要执行什么操作,在画面帧更新的时候要执行什么操作,这些事件函数决定了脚本文件的大致执行结构,下面有一些常用的事件函数~

function Awake() {
}
function Start() {
}
function Update() {
//帧更新
}
function FixedUpdate() {
//固定间隔的更新
}

Chapter-7 并发
UnityScript中使用Coroutine来进行并发。并不是所有操作都要在一帧之内全部完成,可能你想让某段代码在一定之间内持续运行且不影响画面帧的刷新,那么这时候就要用到Coroutine了。

让某段代码以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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息