2017-06-05 5 views
0

私はブラウザとユニティwebglの間で通信するこの問題を抱えています。 基本的には、webglが再生されているビューからjavascriptコードを使ってオブジェクトを生成します。言い換えれば、シーンがロードされた後にゲームオブジェクトを作成するためのjavascriptコードが表示されますが、これがまだ可能かどうかはわかりません。ユニティwebglとブラウザjavascriptの通信

私は統一文書を読んだことがありますが、そこに表示されているコードを実装する方法の例や、それが私が探しているものであるかどうかの例は見つかりませんでした。

https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.htmlこれは私が読んできたことです、特にコードの可視性の部分ですが、私はフロントエンドでこれほど多くのことをしたことがありません。

答えて

0

あなたのできることは、Javascriptコードの中でUnityにメッセージを送信することですが、ユニティにオブジェクトのインスタンス化についての汚い作業をさせることになります。

これは私がちょうど作った例です。

まずあなたはこのように、プレハブ/あなたのオブジェクトを生成しますC#のスクリプトを作成します。

using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 

public class MyObjectSpawner : MonoBehaviour { 
    public Transform Prefab; 

    public void Spawn(string data) { 
     var instance = Instantiate(Prefab); 

     // do what you like with your instantiated object and the data from the javascript here  
    } 
} 

を今、あなたはシーン内のオブジェクトを作成し、添付しこのスクリプトはそれに。作成したゲームオブジェクトに付けた名前に注意してください。これは次のステップで重要になります。今のところ、名前を "MyGameObject"としましょう。

最後のステップは、ゲームページのコンテナ内のJavaScriptです。この例では、ボタンを作成し、クリックするとspawnUnityObject()メソッドが呼び出されます。

HTML::

<button type="button" onclick="spawnUnityObject()">Press me</button> 

Javascriptを:

function spawnUnityObject() { 
    // game object in the scene, method name, method parameter 
    SendMessage('MyGameObject', 'Spawn', 'Super string'); 
} 

結果は次のようになります。あなたは、HTML内の "私を押してください" ボタンをクリックすると、ゲームが出現します。このようオブジェクトであり、Spawn()メソッド内のデータとして「スーパー文字列」を使用できます。

私はこれがあなたを助けてくれることを願っています。詳細が必要な場合はお知らせください。

+0

これは私が必要とするように聞こえる、私はそれを試してみよう、おかげで、ありがとう。 –

+0

私はこのコードを変更しようとしていますが、私が取り除くことができないものは、sendMessage( "MyGameObject"、 "Spawn")、sendMessageは未定義です)に表示されるこのメッセージです。 だから私はこの "gameInstance.SendMessage()"を使用しようとしていると私はまだ同じエラーを取得し、私は本当に理由を知らない。 –

+0

'SendMessage'を呼び出すためにインスタンスを取得する必要はありません。ケースが重要であることに注意してください。したがって、 'sendMessage'は' SendMessage'とは異なります。 – Kleber

関連する問題