如需获取 FlashVars 中的参数,必须使用 Actionscript 创建一个 LoaderInfo 对象并访问其属性“参数”,此参数是一个包含名称-值对(代表提供 给已加载 SWF 文件的参数)的对象。
在名为 “ActionScript” 的资源 (Assets) 中创建一个文件夹。现在在此文件夹中创建一个空文本文件并命名为 “FlashVars.as”,然后输入以下代码。
package { import com.unity.UnityNative; import flash.display.LoaderInfo; public class FlashVars { public static function Join(delimiter: String): String { var parameters: Object = LoaderInfo(UnityNative.stage.loaderInfo).parameters; var text: String = ""; for (var key: String in parameters) text += (text.length ? delimiter : "") + key + "=" + parameters[key]; return text; } } }
此 Actionscript 函数将获取 FlashVars,并将名称-值对连接至可传送到 Unity 的字符串。调用此函数并分析表中的返回参数列表。
string parameters; Dictionary<string,string> paramTable; parameters = UnityEngine.Flash.ActionScript.Expression<string>("FlashVars.Join('|')"); string[] list = parameters.Split('|'); paramTable = new Dictionary<string, string>(); foreach (string parameter in list) { string key = parameter.Substring(0, parameter.IndexOf('=')); string val = parameter.Substring(parameter.IndexOf('=') + 1); paramTable.Add(key, val); }
C# 会首先定义参数字符串和参数表。 此表是包含 FlashVars 的字符串密钥和值的集合。 然后将调用 Actionscript 函数,从参数中提取名称-值对,并将其添加至表格中。 现在,您可在应用程序中读取参数。 以下示例将介绍一些值,并按照 FlashVars 中的说明加载既定场景。
void OnGUI () { GUILayout.Label(" FlashVars = " + parameters); GUILayout.Label(" unitydebug = " + paramTable["unitydebug"]); GUILayout.Label(" deeptrace = " + paramTable["deeptrace"]); if (GUILayout.Button("Click here to load " + paramTable["scene"])) Application.LoadLevel(paramTable["scene"]); }
首次构建此工程,生成 HTML 文件,然后编辑 IE 浏览器和其他浏览器的 FlashVars(不同的两行)。
<param name="flashvars" value="unitydebug=false&deeptrace=false&scene=Scene1" />
最后在浏览器中打开 HTML 文件运行此工程。
Page last updated: 2013-06-25