class GFxTestStart extends GFxMoviePlayer;
var GFxClikWidget button;
var GFxObject title;
function bool Start(optional bool startPaused = false)
{
super.Start();
Advance(0);
title = GetVariableObject("_root.title");
title.SetText("WELCOME GFxGame!");
return true;
}
event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget)
{
`log("------- WidgetName:" @ WidgetName );
`log("------- WidgetPath:" @ WidgetPath );
switch(WidgetName)
{
case('startBtn'):
button = GFxClikWidget(Widget);
button.AddEventListener('CLIK_press', OnStartButtonPress);
break;
case('exitBtn'):
button = GFxClikWidget(Widget);
button.AddEventListener('CLIK_press', OnExitButtonPress);
break;
default:
return super.WidgetInitialized(WidgetName, WidgetPath, Widget);
}
return false;
}
function OnStartButtonPress(GFxClikWidget.EventData ev)
{
ConsoleComman("open Test_UI_1");
}
function OnExitButtonPress(GFxClikWidget.EventData ev)
{
ConsoleComman("exit");
}
final function ConsoleComman(String Cmd)
{
local PlayerController PC;
PC = GetPC();
if( PC != None )
{
PC.ConsoleCommand(Cmd);
}
}
DefaultProperties
{
WidgetBindings.Add( (WidgetName="startBtn", WidgetClass=class'GFxClikWidget') );
WidgetBindings.Add( (WidgetName="exitBtn", WidgetClass=class'GFxClikWidget') );
}
1)安装Flash CS6
2)安装插件 Binaries\GFx\CLIK Tools\Scaleform Extensions.mxp
完成之后如图所示:
3)配置Scaleform Launcher,加入Binaries\GFx目录下文件GFxMediaPlayerD3d9.exe和GFxMediaPlayerOpenGL.exe
完成之后如图所示:
注意:可以在%SWF PATH%后面加 -res 480:800 从而修改分辨率
4)配置Flash中ActionScript2.0路径,最终如图所示,顺序很重要
5)配置Flash中ActionScript3.0路径,如图所示
6)开发AS代码可以使用自带的Flash编辑器,也可以使用Flash Builder
1)在UDKGame\Flash新建文件夹,存放我们即将制作的UI文件
2)目录结构解析,demo1.fla是flash制作的文件,demo1目录存放fla的资源图片等,demo1.swf是导出的给UDK使用的文件。如图所示
3)打开fla,如图所示
这里不多讲,主要是flash制作,相关问题请查阅注意事项。
4)测试并导出,请不要使用Flash Player测试,请使用下图测试。如果一开始保存了fla文件,则测试时会自动导出swf格式文件
5)编写UnrealScript代码,基本思路如下:
* 视频播放器开启视频 - Start()
* 视频播放器已经初始化 - Advance()
* 为所有启用enableInitCallback属性的元素调用WidgetInitialized函数
* 保存引用到所需控件 - 任何在页面中我们所要访问的对象必须有一个保存过的引用
* 为在按钮上的点击事件应用代理 - 使用了WidgetBindings(控件绑定),以便传递给 按钮的WidgetInitialized的控件是GFxCLIKWidget类型的子类型,这种类型的控件可以 添加事件监听器,为点击按钮时调用。
* 当点击按钮时调用代理函数
6)UDK中制作简单的场景:一个小房间,一个出生点,不需要灯光
7)Kismet制作,大致如下:
主要是Open GFx Movie设置,如下图:
8)测试并运行
1)HUD制作
跟UI制作差不多,请记住分辨率的问题,在flash制作的位置和游戏中位置适配的问题。
但HUD主要还是通过代码的PostRender()执行,这部分有待完善,大致如图所示:
class WOTHUD extends HUD;
var Texture2D CursorTexture;
var const color GoldColor;
event PostRender()
{
DrawHUD();
}
function DrawHUD()
{
Canvas.DrawColor = GoldColor;
Canvas.SetPos( 10, 10 );
Canvas.SetPos(Canvas.SizeX/2.f-30.f,Canvas.SizeY/2.f-30.f);
Canvas.DrawTile(CursorTexture, 60 , 60, 305, 260, 60,60);
}
DefaultProperties
{
CursorTexture=Texture2D'UI_HUD.HUD.UTCrossHairs'
GoldColor=(R=255,G=183,B=11,A=255)
}
2)应用到材质,效果如下图:
步骤如下:
* 新建TextureRenderTarget2D文件,并修改尺寸大小
* 新建材质,如图所示:
* open gfx movie设置
* 将几何体应用材质即可显示效果
1)中文显示方块问题,需要字体嵌入。具体步骤:
* 字体 -> 字体嵌入,设置一款字体,最好重命名名称,方便查找
* 选择需要输入文本的控件,在字符中选择嵌入的字体,如图所示
2)如果在按钮上的问题可以聚焦,将下图的按钮取消选择即可
3)导入图片规则
*必须是png格式、允许平滑、无损(PNG/GIF)
*为ActionScript导出,都打钩,标示符把文件名后面的png删除,该文件名是UDK导入后的资源名字
4)实例名称
必须先转换为元件才能输入实例名称,该名称必须是唯一的,在代码中使用,如图所示
5)enableInitCallback(启用Init回调),必须在属性中把勾打上,这样才能在代码中GFxMoviePlayer类的WidgetInitialized方法中回调
6)运行UDK_HUD中的fla文件,报告其他文件出错等,这是因为其他文件默认没有swf格式,请打开其他文件运行一遍即可