示例: Flash Vars

如需获取 FlashVars 中的参数,必须使用 Actionscript 创建一个 LoaderInfo 对象并访问其属性“参数”,此参数是一个包含名称-值对(代表提供 给已加载 SWF 文件的参数)的对象。

在名为 “ActionScript” 的资源 (Assets) 中创建一个文件夹。现在在此文件夹中创建一个空文本文件并命名为 “FlashVars.as”,然后输入以下代码。

ActionScript 3

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 的字符串。调用此函数并分析表中的返回参数列表。

C#

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 中的说明加载既定场景。

C#

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(不同的两行)。

HTML

<param name="flashvars" value="unitydebug=false&amp;deeptrace=false&amp;scene=Scene1" />

最后在浏览器中打开 HTML 文件运行此工程。

Page last updated: 2013-06-25