国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > UnityScript快速入门

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那样通过添加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



生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生