图片 2.1 – 搜索GameInfo 类获取关键字“PawnClass”的查找文本对话框
3. 首先通过按下Ctrl + F键,执行一次针对关键字PawnClass的Actor类搜索。在Find Text (查找文本)对话框的Find What(查找)文本域中输入关键字“PawnClass”。同时请确保选择了From the top(从顶部开始)选项。 第一个匹配值是:
var class DefaultPawnClass;
这看上去正好是我们正在查找的东西。通过在mutator(设置方法)中覆盖这个变量的值,我们将可以使游戏使用我们重新生成的Pawn类。现在我们已经解决了第一个问题,接下来我们需要关注其它的信息。
4. 当处理玩家时,开始查找答案的第一个位置是UTPawn类的脚本。这个虚幻竞技场3中的玩家-和AI-控制的人物的类。在../UTGame/Classes目录中找到UTPawn.uc脚本并打开它。
5. 开始通过按下Ctrl + F来执行搜索。在Find what(查找内容)文本域中输入关键字“Health”并选择From the top(从顶部开始)选项。按下Find(查找)来开始搜索。
图片 2.2 –搜索UTPawn 类来查找关键字“Health”的Find Text (查找文本)对话框
搜索到的第一项应该是:
var int SuperHealthMax; /** Maximum allowable boosted health (允许的增加的最大生命值)*/
这正是我们要找的。通过掌握这些信息,我们现在可以继续搜索我们书写脚本所需要的最后一条信息。
6. 如果您没有任何Unreal经验,无论是关卡设计或脚本编写经验,那么知道这最后的搜索要查找的东西可能是都困难的。体积是Unreal中使用的一种用于定义一块空间区域的方法。某些体积,尤其是PhysicsVolumes可以影响它们包围的控件的物理属性并且可以通过使用bPainCausing属性使得在它内部的任何玩家遭受痛苦。知道了这点知识后,我们可以设计一个使用关键字
bPainCausing的搜索。从UTPawn类中开始搜索是有意义的,但是我们的搜索却没有获得任何有用的东西。于是我们开始移动到下一个选择Pawn类的父类进行搜索。
打开位于../Engine/Classes目录中的Pawn.uc脚本。
7. 再次,按下Ctrl + F来执行搜索。在Find what(查找内容)中输入“bPainCausing”关键字,并选择From the top(从顶部开始)选项。然后按下Find(查找)开始搜索。
图片 2.3 –搜索Actor类来查找关键字“PhysicsVolume”的Find Text (查找文本)对话框
8. 这次搜索的第一个匹配项显示了以下信息:
//Pain timer just expired. (Pain计时器已经过期。)
//Check what zone I'm in (and which parts are)(检查我再区域(以及是哪个部分))。
//based on that cause damage, and reset BreathTime(根据它来产生伤害并充值BreathTime(呼吸时间))
function bool IsInPain() {
local PhysicsVolume V;
ForEach TouchingActors(class'PhysicsVolume',V) if ( V.bPainCausing && (V.DamagePerSec > 0) ) return true; return false; }
再次,我们又找到了我们要找的东西。
当我们具有了适当的可靠计划和必要信息后,我们可以开始书写我们的再生mutator(设置方法)的代码了。
2.2 –初始化PAWN类设置
1. 如果ConTEXT还没有打开,打开ConTEXT。
2. 为了开始书写自定义的Pawn类的代码,我们需要做的第一件事情是新建一个脚本文件。从File(文件)菜单中选择New(新建)或按下工具条上的New File(新建文件)按钮。
图片2.4 –New File(新建文件)按钮
3. 使用Select Active Highlighter(选择激活的文件轮廓)下拉列表中为这个文件选择UnrealEd 或 UnrealScript轮廓。您可以根据您安装的轮廓和您的个人喜好来选择轮廓。
图片 2.5 – Select Active Highlighter(选择激活的文件轮廓)下拉列表 4. 现在我们开始书写代码。任何新的脚本的第一部分都是类的声明。这里我们为脚本取一个名称,并决定它的父类是什么。在第一行,输入以下信息: class UTPawn_SuperRegen extends UTPawn;
在这行代码中,我们命名了我们的类UTPawn_SuperRegen。我们也指出了它是从UTPawn类继承而来的。这从本质上意味着我们的类将会包含了UTPawn类中的所有功能和我们自己添加的任何功能。
5. 我们将会使用一个变量来代表每秒钟要重新生成的玩家的生命值的量。按下回车键两次后在第三行输入以下代码: