このサンプルでは異なるAction Script 3 (以下,AS3) 関数を Unity からコールする方法を示します。3つのスクリプトを見ていただきます:
Flash 向けにビルドしたとき,ExampleClass の AS3実装が使用されます。エディタ上で実行したとき,または Flash 以外のプラットフォーム向けにビルドした場合,ExampleClass の AS3実装が使用されます。
クラスの ActionScript バージョンを作成することによって,Flash Player 向けにビルドするときに ネイティブの AS3 ライブラリを使用できるようになります。これはFlash エクスポートがサポートされてない .NET ライブラリで作業が必要なときに特に役立ちます。
package
{
public class ExampleClass
{
public static function aStaticFunction() : void
{
trace("aStaticFunction - AS3 Implementation");
}
public static function aStaticFunctionWithParams(a : int) : void
{
trace("aStaticFunctionWithParams - AS3 Implementation");
}
public static function aStaticFunctionWithReturnType() : int
{
trace("aStaticFunctionWithReturnType - AS3 Implementation");
return 1;
}
public function aFunction() : void
{
trace("aFunction - AS3 Implementation");
}
}
}
クラスを作成して AS3 実装 を C# または JavaScriptのいずれかで模倣できます。実装は非常に似通っています。両方のサンプルを以下のとおりに提供します。
using UnityEngine;
[NotRenamed]
[NotConverted]
public class ExampleClass
{
[NotRenamed]
public static void aStaticFunction()
{
Debug.Log("aStaticFunction - C# Implementation");
}
[NotRenamed]
public static void aStaticFunctionWithParams(int a)
{
Debug.Log("aStaticFunctionWithParams - C# Implementation");
}
[NotRenamed]
public static int aStaticFunctionWithReturnType()
{
Debug.Log("aStaticFunctionWithReturnType - C# Implementation");
return 1;
}
[NotRenamed]
public void aFunction()
{
Debug.Log("aFunction - C# Implementation");
}
}
@NotConverted
@NotRenamed
class ExampleClass
{
@NotRenamed
static function aStaticFunction()
{
Debug.Log("aStaticFunction - JS Implementation");
}
@NotRenamed
static function aStaticFunctionWithParams(a : int)
{
Debug.Log("aStaticFunctionWithParams - JS Implementation");
}
@NotRenamed
static function aStaticFunctionWithReturnType() : int
{
Debug.Log("aStaticFunctionWithReturnType - JS Implementation");
return 1;
}
@NotRenamed
function aFunction()
{
Debug.Log("aFunction - JS Implementation");
}
}
次のコードによりFlash向けにビルドするときに ActionScript (.as) のメソッドをコールします。これによりネイティブ AS3 ライブラリを Flash エクスポート プロジェクトで使用することが出来ます。非Flash プラットフォーム向けにビルドするか,またはエディタで実行するとき,クラスの C#/Javascript実装が使用されます。
ExampleClass.aStaticFunction();
ExampleClass.aStaticFunctionWithParams(1);
int returnedValue = ExampleClass.aStaticFunctionWithReturnType();
ExampleClass exampleClass = new ExampleClass();
exampleClass.aFunction();