示例:将 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@NotRenamedclass 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);

,