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