예제: Flash에서 유니티로 데이터 공급하기

Flash에서 유니티로 데이터를 공급하려는 경우에, 해당 데이터의 타입은 반드시 지원되는 타입이어야 합니다. 해당 데이터를 표현하는 클래스를 생성할 수도 있습니다. (C# 또는 JavaScript를 이용해서 구현할 수 있습니다).

첫째, 사용자의 오브젝트의 수행을 담당하는 AS3(ActionScript3)를 생성하고 해당 클래스를 사용자의 프로젝트에 포함시킵니다 (ActionScript라고 이름 붙여진 폴더 내부에서):

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

이제 생성된 AS3와 일치하는 C# 또는 JavaScript 오브젝트를 생성합니다.

아래 사용된 NotRenamed 속성은 생성자, 메소드, 필드와 속성들의 이름이 손상되는 것을 막습니다.

NotConverted 속성은 빌드 pipeline에게 타입또는 타겟 플랫폼의 멤버를 변환하지 않도록 지시합니다. 일반적으로 Flash로 빌드하는 경우에, 사용자의 C#/JavaScript 스크립트들은 ActionScript (.as) 스크립트로 변환됩니다. [NotConverted] 속성을 추가하면, 이러한 프로세스를 재정의(override)해서, 사용자에게 자신만의 .as 스크립트를 제공할 수 있도록 합니다. 사용자가 제공하는 더미(dummy) C#/JavaScript 는 유니티가 해당 클래스의 signature를 알 수 있도록 해주고 (예를들어, 어떤 함수의 호출이 허용되어야 하는지에 대한 부분), 사용자의 .as 스크립트는 그런 함수들의 동작(구현)을 제공합니다. ActionScript의 버전은 Flash로 빌드하는 경우에만 사용된다는 점을 주의하십시오. 에디터모드 또는 다른 플랫폼으로 빌드하는 경우에, 유니티는 사용자의 C#/JavaScript 버전을 사용하게 됩니다.

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가 필요합니다, 예를들어:

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

그 다음, 해당 오브젝트를 검색할 수 있고 해당 데이터에 접근이 가능합니다:

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


주의: 플래시 내보내기 기능은 현재 개발자 프리뷰로 사용 가능합니다. 이 기능은 아직 개발 중이므로 위 정보는 변경 될 수 있습니다.

역링크