その言語間でデータのやりとりをしたい場合があります。
非常にわかりやすい例がありました。
http://www.41post.com/1935/programming/unity3d-js-cs-or-cs-js-access
この例は変数を受け取っていたのですが、メソッド呼び出しもいけるようです。
以下は、メソッドを付け加えた例です。
myJS.js参照元ページでも注意がありますが、
-----------------------------------
public var message : String = "myJS is called";
public function showMessage() {
print("showMessage(myJS.js) is called.");
}
-----------------------------------
myCS.cs
-----------------------------------
using UnityEngine;
using System.Collections;
public class myCS : MonoBehaviour
{
public string message = "myCS is called";
public void showMessage(){
print("showMessage(myCS.cs) is called.");
}
}
-----------------------------------
上記2ファイルは「Standard Assets」または「Plugins」フォルダ配下に置く必要があります。
あとは、各々を呼び出すスクリプトを用意すれば完了です。
下の例では、変数やメソッドにアクセスして、コンソール画面と画面にラベル表示しています。
CallCSCode.js(C#内のものを呼び出す)Androidのネイティブ機能を使うとき、
-----------------------------------
private var csScript : myCS;
function Awake () {
// Standard Assets にあるC#を読み込む
csScript = this.GetComponent("myCS");
// メソッドを呼ぶ
csScript.showMessage();
}
function OnGUI() {
GUI.Label(new Rect(10,10,300,20), csScript.message);
}
-----------------------------------
CallJSCode.cs(JavaScript内のものを呼び出す)
-----------------------------------
using UnityEngine;
using System.Collections;
public class CallJSCode : MonoBehaviour
{
private myJS jsScript;
void Awake () {
// JSを読み込む
jsScript = this.GetComponent();
// メソッドを呼ぶ
jsScript.showMessage();
}
void OnGUI() {
GUI.Label(new Rect(10,100,300,20), jsScript.message);
}
}
-----------------------------------
今私が知っている方法だと Java→C# とデータが渡ります。
さらに、JavaScriptでも使いたいときがあったので、上記の方法を使っています。
実際の画面と上記のプロジェクトがあります↓
http://be-style.jpn.com/unity/20111007