2017-06-05 73 views
0

所以我有浏览器和统一webgl, 之间的沟通这个问题,基本上我想要做的就是在视图webgl正在播放的JavaScript代码团结的场景中生成对象。换句话说,视图会在加载场景之后创建游戏对象的javascript代码,但不确定这是否可行。统一webgl和浏览器javascript通信

我已阅读统一文档,但我还没有找到如何实现在那里显示的代码或如果它是我正在寻找的示例。

https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html这就是我一直在阅读的,特别是代码可见性的一部分,但由于我从来没有与前端合作过,所以我有点无知。

回答

0

你可以做的是在你的Javascript代码中发送消息给Unity,但你会让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”,“产卵”)','sendMessage'是不明确的) 所以我一直在尝试使用这个“gameInstance.SendMessage()”,我仍然得到相同的错误,我真的不知道为什么。 –

+0

您不需要获取任何实例来调用'SendMessage'。注意案件很重要。所以'sendMessage'不同于'SendMessage'。 – Kleber