欢迎来到天天文库
浏览记录
ID:1271239
大小:163.50 KB
页数:37页
时间:2017-11-09
《讲稿(五) unity脚本语法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、(五)游戏开发平台(1)游戏开发平台的种类(2)各种游戏开发平台的适用范围(3)各种游戏开发平台介绍,如Torque,Unreal,Unity(4)游戏开发平台Unity的基本操作,游戏开发平台Unity的脚本(5)三维模型在游戏开发平台中的使用(6)游戏开发平台的各种元素:GUI,地形引擎,刚体,碰撞器,粒子系统等(7)人工智能(8)FPS游戏案例分析Unity脚本语法#pragmastrict,#pragmadowncast、#pragmaimplicit在一些Unity脚本的开始经常可以看到#pragmastrict,#pragmadowncast、#pragmaimpli
2、cit指令,而有的Unity脚本则没有这些指令,那这些指令有什么作用呢?#pragmastrict,此指令的含义是强制输入,也就是我们在声明变量时,需要精确的声明变量是什么类型,而不是让编译器来自己推测变量的类型,因此,也不能随便的使用一个随机的名称并让编译器来为你实例化此变量。例如,在使用此指令后,我们随意声明一个变量: privatevarbobby;//是不可以的,而需要这样: privatevarbobby:GameObject;//这个可以 通过使用#pragmastrict,可以强制我们养成良好的编程习惯,但这在Unity中也不是必须要这样做。
3、而#pragmadowncast和#pragmaimplicit指令,则是可以与#pragmastrict指令搭配使用,从而做到“严中有松”,真是有点意思。先看#pragmaimplicit指令,它的意思是在使用#pragmastrict指令,搭配此指令又可以含蓄的声明变量,例如: #pragmastrict foo=5;//不可以 #pragmastrict varfoo=5;//可以 #pragmastrict #pragmaimplicit foo=5;//通过使用#pragmaimplicit,此句是可以的。 而#pragmadowncas
4、t语句则允许在使用#pragmastrict指令时,使变量可以从super(父类型)到sub(子)类型的转换,例如: #pragmastrict vargo:GameObject; varclone:GameObject=Instantiate(go);//此语句是不可以的,因为Instantiate后返回//的物体类型是Object,而不是GameObject #pragmastrict #pragmadowncast vargo:GameObject; varclone:GameObject=Instantiate(go);//此语句是可以的
5、,使用了#pragmadowncast 下面的语句也是可以的: #pragmastrict vargo:GameObject; varclone:GameObject=Instantiate(go)asGameObject;//此语句也是可以的,因为使//用了类型转换as。UnityScript程序设计语言UnityScript(即javascriptforUnity)的教程网上千千万,中文的也不少,但是讲Unity3D界面操作的多,讲UnityScript这个语言的少,同时对于UnityScript的描述部分,也是入门的教程多,对语言特性的描述少,能够成系统的我就根本没
6、有找到过。连续的看了不少的Unity3D的文章,书籍,但是发现写代码的时候,对UnityScript的细节掌握仍然不甚了了,也就是对怎么写UnityScript效率更高,更加符合语言设计的目的,风格等事情并还没有清晰的认识。这个对于习惯写脚本的人来说,可能是常态,对于习惯C++我来说,简直难以忍受。看到这样的名字,学过编程的人都知道我是模仿了经典的C语言教材,目的也是一样。,本文的目的不是再多写一个教程,而是希望对UnityScript这个语言进行一个较为深入细节,并且准确的描述。也就是说,相对于教程,本文会更加像一个语言说明书。同时,更不用说的就是,本文会甚少涉及Unity3D
7、本身的界面操作,仅仅关注于UnityScript这个语言,不要希望通过本文学会Unity3D,但是,当你对Unity3D有了些基本的了解后,希望写一个大型游戏时,本文会对你该怎么写脚本,怎么写对脚本,怎么样写好脚本,并且避免掉进语言的陷阱中有一些帮助。更进一步的说,因为UnityScript完全是Unity3D控制的语言,同时仅在Unity3D中可用,所以对于UnityScript来说,甚至于连哪些是属于语言本身的特性,哪些属于库的扩展,这些都分不清楚。这比ObjectiveC还
此文档下载收益归作者所有