UnrealScript简单教程.docx
- 文档编号:30037999
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:123
- 大小:87.08KB
UnrealScript简单教程.docx
《UnrealScript简单教程.docx》由会员分享,可在线阅读,更多相关《UnrealScript简单教程.docx(123页珍藏版)》请在冰豆网上搜索。
UnrealScript简单教程
目录
∙UnrealScript语言参考
o介绍--------------------------------------------------------------------03
▪快速链接-------------------------------------------------------------03
▪本文档的目的----------------------------------------------------------03
▪UnrealScript的设计目标-----------------------------------------------03
▪虚幻引擎3中UnrealScript的新功能-------------------------------------04
▪代码结构示例----------------------------------------------------------04
▪Unreal虚拟机---------------------------------------------------------08
▪对象层次--------------------------------------------------------------08
o类-----------------------------------------------------------------------09
o变量---------------------------------------------------------------------12
▪变量类型--------------------------------------------------------------12
▪内置类型---------------------------------------------------------12
▪集合数据类型-----------------------------------------------------12
▪Unreal类型------------------------------------------------------12
▪变量修饰符-------------------------------------------------------13
▪可编辑性---------------------------------------------------------15
▪数组------------------------------------------------------------------15
▪Structs---------------------------------------------------------------15
▪修饰符-----------------------------------------------------------17
▪枚举------------------------------------------------------------------17
▪常量------------------------------------------------------------------18
▪Object和actor引用变量------------------------------------------------18
▪类引用变量------------------------------------------------------------19
o表达式-------------------------------------------------------------------20
▪赋值------------------------------------------------------------------20
▪在类之间转换对象引用--------------------------------------------------21
o函数---------------------------------------------------------------------22
▪声明函数--------------------------------------------------------------22
▪函数参数修饰符--------------------------------------------------------23
▪函数重载--------------------------------------------------------------24
▪高级函数修饰符--------------------------------------------------------25
o控制结构-----------------------------------------------------------------27
▪循环结构--------------------------------------------------------------27
▪循环-------------------------------------------------------------27
▪Do循环----------------------------------------------------------27
▪While循环-------------------------------------------------------28
▪Continue---------------------------------------------------------28
▪Break------------------------------------------------------------29
▪选择结构--------------------------------------------------------------29
▪If-Then-Else语句------------------------------------------------29
▪Case语句--------------------------------------------------------30
▪Goto-------------------------------------------------------------31
o语言功能-----------------------------------------------------------------32
▪内置的操作符和它们的优先级--------------------------------------------32
▪通用函数--------------------------------------------------------------33
▪创建对象---------------------------------------------------------33
▪整型函数---------------------------------------------------------35
▪浮点型数据函数---------------------------------------------------35
▪字符串函数-------------------------------------------------------36
▪Vector函数------------------------------------------------------37
▪计时器函数-------------------------------------------------------37
▪调试函数---------------------------------------------------------37
▪UnrealScript处理器---------------------------------------------------38
▪UnrealScript工具和使用-----------------------------------------------38
▪ScriptProfiler(脚本分析器)--------------------------------------38
▪脚本调试器-------------------------------------------------------38
▪虚幻开发环境(UDE)------------------------------------------------38
o高级的语言功能-----------------------------------------------------------38
▪计时器----------------------------------------------------------------38
▪状态------------------------------------------------------------------38
▪状态概述---------------------------------------------------------38
▪状态标签和Latent函数--------------------------------------------40
▪状态继承和范围规则-----------------------------------------------41
▪高级的状态编程---------------------------------------------------43
▪状态栈-----------------------------------------------------44
▪Replication(复制)----------------------------------------------------45
▪Iteration(迭代)(ForEach)---------------------------------------------45
▪函数调用限制符--------------------------------------------------------46
▪在一个变量类中访问静态函数--------------------------------------------47
▪变量的默认值----------------------------------------------------------47
▪访问变量的默认值-------------------------------------------------47
▪通过一个类的引用来访问变量的默认值-------------------------------48
▪使用defaultproperties(默认属性)语句块指定默认值-----------------48
▪语法-------------------------------------------------------48
▪Struct默认值---------------------------------------------------------51
▪动态数组--------------------------------------------------------------51
▪长度变量---------------------------------------------------------53
▪迭代动态数组-----------------------------------------------------53
▪接口类----------------------------------------------------------------53
▪函数Delegates--------------------------------------------------------53
▪Native类-------------------------------------------------------------53
▪元数据支持------------------------------------------------------------54
▪元数据概要-------------------------------------------------------54
▪使用多个元数据说明-----------------------------------------------54
▪提供的元数据说明-------------------------------------------------54
o高级技术问题-------------------------------------------------------------55
▪UnrealScript的实现---------------------------------------------------55
▪UnrealScript的二进制兼容问题-----------------------------------------55
▪技术注意事项----------------------------------------------------------55
▪UnrealScript编程策略-------------------------------------------------56
附录1:
UnrealScript预处理器(UPP)-------------------------------58
附录2:
UnrealScript接口------------------------------------------61
附录3:
UnrealScriptDelegates(代理)-----------------------------63
附录4:
UnrealScript结构体应用-----------------------------------66
★介绍
◇快速链接
请一定要查看UnrealScript的快速参考表和掌握UnrealScriptTOC指南。
◇本文档的目的
这是一篇描述UnrealScript编程语言的技术文档。
它不是指南,也没有提供有用的UnrealScript代码的详细例子。
要获得UnrealScript的例子,读者可以参考引擎的源代码,它提供了成千上万行的有效代码,用来解决许多例如AI、运动、武器装备和触发事件等很多问题。
最好的入门方式是查看"Actor"、"Object(物体)"、"Controller(控制器)"、"Pawn(士兵)""Weapon(武器)"的脚本。
本文档假设读者使用过C/C++或Java编程语言、熟悉面向对象程序设计、已经玩过Unreal的游戏并使用过UnrealEd的编辑环境。
对于是面向对象程序设计的新手的程序员,我强烈推荐您去A或者书店买一本介绍java编程方面的书。
Java和UnrealScript很相似,并且由于它的干净和简单的方法使它成了一种值得学习的极好的语言。
◇UnrealScript的设计目标
UnrealScript是为开发团队和第三方Unreal开发人员创建的,是一种强大的内置的编程语言,它自然地满足了游戏编程的需要和细小差别。
UnrealScript的主要设计目标:
∙UnrealScript支持传统的编程语言没有提到的时间、状态、属性、网络等主要的概念。
这大大地简化了UnrealScript代码。
基于C/C++的AI和游戏逻辑编程的主要复杂性是处理要花费一定量的游戏时间来完成的事件以及处理依赖物体状态的各个方面的事件。
在C/C++中,这将会导致冗长的混乱的代码,使代码难于书写、理解、维护和调试的。
UnrealScript包含了对时间、状态和网络复制的内部支持,这大大地简化了游戏编程。
∙提供一种像Java类型编程语言一样简单的、面向对象的并在编译时进行错误检查的语言。
就像Java为Web开发人员提供了一个干净的开发平台,UnrealScript为3D游戏提供了一个同样干净的、简单的、强大的编程语言。
UnrealScript从Java语言中衍生的主要编程观念有:
o没有指针并自动进行垃圾回收的环境;
o一个简单的单继承类图;
o编译时进行强类型检查;
o安全的客户端执行的"sandbox"\
o像C/C++/Java代码一样熟悉的外观和感觉。
∙UnrealScript为了在游戏对象和交互方面而不是位和像素方面提供丰富的高层次的编程语言,所以在设计上必须有一些妥协,我们为了获得开发的简单性和强大性,从而牺牲了执行速度。
毕竟,Unreal的底层的、对性能起重要作用的代码是由C/C++书写的,在那里所获得的性能提高的价值超出了所增加的复杂性。
UnrealScript是在那个层次的基础上进行运作的,在物体和交互性的层次上而不是位和像素的底层上。
-
在UnrealScript开发的早期,我们探索了几个主要的不同的编程语言范例,然后又放弃了,最终开发出了目前的UnrealScript。
首先,我们研究使用Sun和Microsoft为Windows设计的JavaVM(虚拟机)作为Unreal脚本语言的基础。
但最终证明在Unreal的情境中Java并没有提供比C/C++更大的编程好处,反而由于缺乏所需要的语言功能(比如运算符重载)而增加了一些令人沮丧的限制,另外也证明由于VM过多的任务转换开销和Java垃圾回收器在处理大的对象图形时的低效率导致运行速度特别的慢。
其次,我们设计了基于VisualBasic变量的UnrealScript初期实现,它可以工作的很好,但是对于已经习惯于C/C++的程序员来说,它不是那么友好。
最终基于我们想将游戏的特定概念映射到语言定义本身的愿望以及获得速度和熟悉度的需要,我们决定将UnrealScript设置为基于C++/Java变种的语言。
结果证明这是一个好主意,因为它在很多方面大大地简化了Unreal代码。
◇虚幻引擎3中UnrealScript的新功能
对于已经熟悉UnrealScript的人来说,这里是一个自虚幻引擎2后在UnrealScript中所发生的主要改变的简短概要。
∙Replication(复制)-在UE3中replication(复制)语句已经改变:
o现在复制(replication)语句块只适用于变量。
o函数复制(replication)现在通过以下方法定义:
functionspecifiers(Server,Client,Reliable)
∙状态栈-你现在可以使状态压入栈或弹出栈。
∙UnrealScript处理器-支持宏和条件编译。
∙调试功能-添加了新的和调试相关的功能。
∙默认属性-defaultproperties块的处理已经被改变/改进。
o默认值-structs现在也可以有默认属性。
o不再允许给配置或者局部变量设定默认值。
o在运行时系统中是随机的,它不再允许执行class'MyClass'.default.variable=1的操作。
∙动态数组-动态数组现在有一个新功能find(),用于查找一个元素的索引。
∙动态数组迭代器-Foreach操作符现在可以应用于动态数组。
∙Delegate函数参数-UE3现在允许delegates作为函数的传递参数。
∙接口-添加了对接口的支持
∙从其它的类中访问常量:
class'SomeClass'.const.SOMECONST
∙支持多个定时器
∙默认的函数参数值-现在可以指定操作函数参数的默认值。
∙支持工具提示-如果在UnrealScript中属性声明的上面有一个=/**tooltiptext*/=形式的注释,则在编辑器的属性窗口中,当您将鼠标放到一个属性上时可以显示工具提示文本。
∙支持元数据-通过将属性和各种类型的元数据相关联,扩展了in-game(游戏中)和in-editor(编辑器中)的功能。
◇代码结构示例
这个示例说明了一个典型的简单的UnrealScript类,并且它囊括了UnrealScript的语法和功能。
注意由于该文档没有和代码同步,所以这个代码可能和现在的Unreal源代码的呈现不一样。
//=====================================================================
//TriggerLight.
//一个可以通过触发进行开关的光源
//=====================================================================
classTriggerLightextendsLight;
//---------------------------------------------------------------------
//变量
var()floatChangeTime;//光源从开到关所需要的时间
var()boolbInitiallyOn;//它在最初是否是亮的
var()boolbDelayFullOn;//在到完全的点亮之前是否有延迟
varELightTypeInitialType;//光源的初始类型
varfloatInitialBrightness;//光源的初始亮度
varfloatAlpha,Direction;
varactorTrigger;
//---------------------------------------------------------------------
//引擎函数
//在游戏开始播放时调用
functionBeginPlay()
{
//记忆光源的初始类型并为它设置一个新的类型
Disable('Tick');
Initia
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UnrealScript 简单 教程