UDN
Search public documentation:

GFxUScriptVarAccessCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 用户界面 & HUD > Scaleform GFx > 如何在一个外部SWF文件中访问虚幻脚本变量

如何在一个外部SWF文件中访问虚幻脚本变量


概述


这个快速教程指导您如何着手将变量从UnrealScript(虚幻脚本)读取(或者接收)到您的Flash文件中(而不是从UnrealScript中发送变量)。

ActionScript
var retVal:Object = {};
retVal = ExternalInterface.call("GetUnrealVariable", "someFloat", "float");
// Parameter 2 = the variable name in UnrealScript.
// Parameter 3 = the variable type in UnrealScript - float, string, etc.

trace("My UnrealScript Variable: " + retVal.someFloat);

但是,这并不意味着您可以象在ActionScript(动作脚本)里那样在UnrealScript(虚幻脚本)中使用动态变量名。 如果您可以,我们可以只写如下代码: asval.n = VarName; 但因为您不能这样操作,所以这仅是个临时解决方法,这需要您在一个switch语句中针对您想在Flash中访问的每个UnrealScript变量书写一个case语句。

Unrealscript
var float someFloat;
var string someString;
var bool someBoolean;

someFloat = 1337;
someString = "Boo!";
someBoolean = true;

function GFxObject GetUnrealVariable(string VarName, string VarType)
{
  local GFxObject TempObj;
  local ASValue asval;
  local array<ASValue> args;

  TempObj = CreateObject("Object");
  switch(VarType)
  {
  case ("float"):
    asval.Type = AS_Number;
    break;

  case ("string"):
    asval.Type = AS_String;
    break;

  case ("bool"):
    asval.Type = AS_Boolean;
    break;

  default:
    break;
  }

  switch (VarName)
  {
  case ("someFloat"):
    asval.n = someFloat;
    break;

  case ("someString"):
    asval.s = someString;
    break;

  case ("someBoolean"):
    asval.b = someBoolean;
    break;

  default:
    break;
  }

  args[0] = asval;
  TempObj.Set(VarName, args[0]);

  return TempObj;
}