示例: 将 Flash 中的数据提交给 Unity

如需将 Flash 中的数据提交给 Unity,则该数据必须为支持的数据类型。也可创建类来表示数据(通过提供 匹配的 C# 或 JavaScript 实现)。

首先,创建对象的 AS3 实现,并在工程(在名为 ActionScript 的文件夹中)中加入此类:

ActionScript 3

package
{
	public class ExampleObject
	{
		public var anInt : int;
		public var someString : String;
		public var aBool : Boolean;
	}
}

现在创建一个与 AS3 实现匹配的 C# 或 JavaScript 对象。

以下使用的 NotRenamed 属性防止对构造函数、类函数、字段和属性进行名称重整。.

NotConverted 属性指示构建管线不要将类型或成员转换为目标平台。通常,构建 Flash 时,每个 C#/JavaScript 脚本都将转换为 ActionScript (.as) 脚本。添加 [NotConverted] 属性可重写此过程,进而允许您手动提交自有的 .as 脚本版本。您提供 的虚拟 C#/JavaScript 将允许 Unity 了解类的签名(如允许其调用的函数),并且 .as 脚本将提交这些函数的实现。注意,ActionScript 版本只可用于构建 Flash。在编辑器中或构建其他平台时,Unity 将使用 C#/JavaScript 版本。

NotFlashValidated 属性以显性方式告知 Flash 验证控件忽略该类型或成员,以此方式实现目标。

C#

[NotConverted]
[NotRenamed]
public class ExampleObject
{
    [NotRenamed]
    public int anInt;

    [NotRenamed]
    public string someString;

    [NotRenamed]
    public bool aBool;
}

JavaScript

@NotConverted
@NotRenamed
class ExampleObject
{
    @NotRenamed
    public var anInt : int;

    @NotRenamed
    public var someString : String;

    @NotRenamed
    public var aBool : boolean;
}

现在,您需要使用 AS3 中的一种方式查找对象,例如:

ActionScript 3

public static function getExampleObject() : ExampleObject
{
    return new ExampleObject();
}

然后,可以检索该对象并访问其中的数据:

ExampleObject exampleObj = UnityEngine.Flash.ActionScript.Expression<ExampleObject>("MyStaticASClass.getExampleObject()");
Debug.Log(exampleObj.someString);

Page last updated: 2013-06-25