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这个关键字。
编译后,系统就能自动读取到这个配置参数了。
================================================================================================