UnityScript快速入门
来源:程序员人生 发布时间:2014-09-29 08:00:01 阅读次数:2974次
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那样通过添加private或public关键字来设置变量、类或函数的访问控制权限(也叫对外可见性),例如:
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
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠