UnrealScript 自学笔记(一),在类中加入自定义的配置文件config(user);
作者:华文广 2011/7/29
在UDK中用到大量的配置文件,这些配置文件中的参数,其实就对应着某个脚本类的变量,使用配置文件的最大好处就是,我们可以随时改变某些参数的默认值,而不虽要重新编译我们的UDK脚本,同时也可以用于让玩家去自已设定一些参数并保存下来,下次再打开游戏的时候UDK会自动加载这些配置。
在EPIC官方文档中有以下文章,做了详细介绍:http://udn.epicgames.com/Three/ConfigurationFiles.html
在这篇文章中介绍了配置文件的应用,但如何给我们自定义的类添加一个自定义的配置文件,文章中说得不是很清楚。
这里我们就拿“[UDK游戏制作初窥教程].UDK.Part.4.First.UnrealScript” 中的TutorialPawn这个类来举例说明一下吧,
class TutorialPawn extends UTPawn; simulated function bool CalcCamera(float fDeltaTime, out vector out_CamLoc, out rotator out_CamRot, out float out_FOV) { local vector start,end,hitLocation, hitNormal; local actor a; start = Location; if(Controller != none) { end = Location - Vector(Controller.Rotation) * 192.0f; } else { end = Location - Vector(Rotation) * 192.0f; } a = Trace(hitLocation, hitNormal, end, start, false); if ( a != none ) { out_CamLoc = hitLocation; } else { out_camLoc = end; } out_CamRot = Rotator(Location - out_Camloc); return true; } defaultproperties { Begin Object Name=WPawnSkeletalMeshComponent bOwnerNoSee = false End Object Name="TutorialPawn" }
CalcCamera在这里是一个计算第三人称视角的函数,里面有一个硬编码数值192.0f,指的是相机离开角色的距离,我们可以把它写到配置文件中,这样可以方便玩家修改,于是我们可以这样处理:
class TutorialPawn extends UTPawn config(User); var config float CameraDistance; simulated function bool CalcCamera(float fDeltaTime, out vector out_CamLoc, out rotator out_CamRot, out float out_FOV) { local vector start,end,hitLocation, hitNormal; local actor a; start = Location; if(Controller != none) { end = Location - Vector(Controller.Rotation) * CameraDistance; } else { end = Location - Vector(Rotation) * CameraDistance; } ............................
在类声明的后面加一个config(User)设定,这里User指的是ini配置文件名,可以自定义,这个文件就文在D:\UDK\UDK-2011-05\UDKGame\Config目录下面。文件命名为UDKUser.ini,前面一定要加上UDK,要不然系统没办法识别,这个命名方式很怪,比如config(Game),它指的就是读取UDKGame.ini文件。
在UDKUser.ini文件中,我们在文件末尾加入两行:
[TutorialGame.TutorialPawn] CameraDistance = 192.0f
[TutorialGame.TutorialPawn]
CameraDistance = 192.0f[TutorialGame.TutorialPawn] ->[包名.类名]
var config float CameraDistance;这就是用于配置有变量,一定要加入config这个关键字。
编译后,系统就能自动读取到这个配置参数了。
================================================================================================