udk教程 下载本文

如果你确定看完了《建立一个空工程-上》这篇,并且没有问题,那么接着和我学习把。

第一步:

首先确保机器已经安装vs2008(或者vs2005,以后文章都以vs2008为例),然后安装nFringe (nFringe的最新版http://wiki.pixelminegames.com/index.php?title=Tools:UnrealScript_Studio:Releases可以在这里找到,目前附件传的是nFringeSetup-1.0.24573.0.msi也是截止发帖时候的最新版,此插件有30天使用限制,我先看大家的下载次数吧,至少30天内我暂时不会公开破解补丁)

第二步:

2.1.打开VS2008,选择左上角菜单中的【文件】--【新建】--【项目】 2.2.选择UnrealEngine 3 Licensees Project

2.3.检查【创建解决方案的目录】的勾是否已被去掉。

2.4.位置填写为 安装目录:\\KingdomWorld\\Development\\Src\\KWGame 2.5.名称为KWGame(注意大小写),点击确定.

2.6.打开目录KingdomWorld\\Development\\Src\\KWGame\\KWGame将其所有文件剪切至KingdomWorld\\Development\\Src\\KWGame

2.7.打开目录KingdomWorld\\Development\\Src\\KWGame删除KWGame文件夹(此时里面那个文件夹应该没有文件,都被你剪切到上面了)

2.8.打开目录KingdomWorld\\Development\\Src\\KWGame使用vs2008打开KWGame.sln工程

第三步:

3.1.选择左上角菜单中的【项目】--【KWGame 属性】 3.2.设置如下参数。

General中

Game中的Target Game为UnrealEngine 3 Mod

UCC Path为 安装目录:\\KingdomWorld\\Binaries\\UDK.exe

Reference Source Path为 安装目录:\\KingdomWorld\\Development\\Src Build中

Script Outputs中的Manually set UCC output directory为 安装目录:\\KingdomWorld\\UTGame\\Script Debug中

Start Action中的Start Game Executable为 安装目录:\\KingdomWorld\\Binaries\\UDK.exe

Load map at startup为你的地图文件名,如我们为默认上次没删的EnvyEntry.udk则填写为EnvyEntry

Start with speacified game为KWGame.KWInfo 勾上Enable unpublished mods

勾上Open log window at postions并且设置为0 Left,0 Top

第四步:

4.1.进入目录KingdomWorld\\Development\\Src\\KWGame,将Classes文件夹改名为Classes1 4.2.在vs2008里选中KWGame工程点击右键,选择【添加】--【新建文件夹】

4.3.讲其文件夹名命名为Classes

4.4.关闭vs2008,进入目录KingdomWorld\\Development\\Src\\KWGame,删除Classes文件夹,将Classes1改名回Classes

(因为在上篇文章里这个文件夹下有2个文件,先改名是为了防止vs2008里创建同名文件夹失败)

4.5.打开目录KingdomWorld\\Development\\Src\\KWGame使用vs2008打开KWGame.sln工程 4.6.在vs2008里选中KWGame工程中,选中Classes目录,点击右键,选择【添加】--【添加现有项】

选择KingdomWorld\\Development\\Src\\KWGame\\Classes目录下的KWInfo.uc和KWPlayerController.uc(上篇教程中创建)

4.7.在vs2008里选中KWGame工程(选择工程路径不是Classes文件夹)点击右键,选择【添加】--【添加现有项】

选择KingdomWorld\\UTGame\\Config目录下的DefaultEngine.ini和DefaultGame.ini(特别注意添加文件的时候,在窗体那里添加按钮旁边有个小三角,选择添加为链接)

总结:

至此,你可以在VS2008中调试你的UDK项目了,在下面章节中,我们将会对这个工程继续讲解。来做一个类似大菠萝的视角的游戏。

在以上的章节中,我们已经创建了一个可以调试的UDK空环境,并且保证除了底层Engine部分,其他的资源都已经剔除掉了,在这里,我们接着开发属于自己的游戏。

第一步:

我们先吧制作好的场景(可以参考其他教程或者等待其他人更新场景制作教程,在此系列就不涉及大部分UDK编辑器部分的操作,本系列留给程序员)放入

KingdomWorld\\UTGame\\Content\\Maps中。 附带一个我随便制作的场景:

第二步:

进入KingdomWorld\\Development\\Src\\KWGame目录,打开KWGame.sln工程。 修改工程属性的Debug中Start Action中的Load map at startup为1001(地图名)

保存(ctrl+s)好后,我们可以在工程里按下菜单里的【调试】--【启动调试】(F5)来看效果。

如果能正确显示如上画面后,代表你的vs工程配置没有问题了。

接下来我们需要按下键盘的\键,呼出控制台,输入exit并按下回车退出游戏界面

要注意的是,这时候虽然游戏关闭了,但是你的VS工程并没有关闭, 我们需要点击菜单里的【调试】--【停止调试】(Shift+F5)来停止工程。

第三步:

现在我们在vs工程里双击打开Classes里的KWPlayerController.uc进行编辑。

可以发现,我们编写的KWPlayerController类实际上继承了GamePlayerController类。

而GamePlayerController类是做什么的呢?(具体我们可以参考API手册,文章末尾的附件) 其实是一个角色控制类。这么说吧,比如像在控制台里面的命令,鼠标,键盘的操作,全部都在这个控制类。

你可以吧他看成一个Input控制类。

所以,当你的鼠标点击的时候,我们可以在这个类里编写代码来实现你需要的功能。 在学习写第一个类的时候,我们可以加一小段调试代码,从而观察环境里的这个类是否被运行。

3.1.新增一个PostBeginPlay方法

1. simulated event PostBeginPlay() 2. {

3. super.PostBeginPlay(); 4. `Log(\角色控制类运行\ 5. }

复制代码

新增代码后的效果:

我们通过手册可以看到GameFramework.GamePlayerController的父类是Engine.PlayerController

而Engine.PlayerController中,则有一个simulated event PostBeginPlay,所以我们可以重写,他也会被自动调用(这是UDK的uc脚本机制)

其实追溯源头应该是Engine.Actor,而在此类有一个event PostBeginPlay();在他继承的类中重写,则会被自动调用。

而大部分类的主父类都集成了它,基本上类在运行后,都会首次寻找是否有PostBeginPlay方法来执行。你可以吧他看做这个类的构造函数吧。 因为重写了他,因为我们并不知道继承的这个类的上面那些乱七八糟类里同样方法里做了一些什么事情,所以我们试用super来调用父类的这个函数。在后面再插入我们自己需要编写的代码。

第四步:

由于我们之前已经在KWInfo.uc里的DefaultProperties方法里,对PlayerControllerClass的指针已经赋值到了我们新做的KWGame.KWPlayerController里。所以这里我们新做的控制类则会被调用。

在这里说一下,由于我们在Default.ini里修改的[Engine.GameInfo]中的DefaultGame指向到KWGame.KWInfo类,那么KWInfo你可以看做整个游戏的main函数。

而PlayerControllerClass是默认的用户控制类的指针(其他指针可以参考API,后面也会对一个个指针进行讲解)

而我们需要做的就是新建一个类继承他,然后在main里绑定他。 现在,我们可以按下F5,看一下左边日志窗口的提示信息。

如果你的界面如上图所示,那么你的游戏已经成功调用了KWGame.KWPlayerController类。 很激动吧。你已经完成了你的第一个类的编写,并且通过VS已经调试出结果了。

还记得我们之前的步骤吗?按下键盘上的\键呼出控制台,输入exit,并且在vs里点击停止调试就可以回到我们的界面来继续编码。