【问题标题】:unity webgl and browser javascript communicationunity webgl 和浏览器 javascript 通信
【发布时间】:2017-06-06 11:55:42
【问题描述】:

所以我在浏览器和统一 webgl 之间进行通信时遇到了这个问题, 基本上我想要做的是从正在播放 webgl 的视图中使用 javascript 代码在统一的场景中生成对象。换句话说,在场景加载后,视图将有 javascript 代码来创建游戏对象,目前还不确定这是否可能。

我已经阅读了统一文档,但我没有找到如何实现那里显示的代码的示例,或者它是否是我正在寻找的。​​p>

https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html 这是我一直在阅读的内容,特别是代码可见性部分,但由于我从未使用过这么多前端,所以我有点无能为力。

【问题讨论】:

    标签: javascript c# unity3d frontend unity-webgl


    【解决方案1】:

    您可以做的是在您的 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 中的“Press me”按钮时,游戏将生成一个对象,您可以在 Spawn() 方法中使用“超级字符串”作为数据。

    我希望这对你有帮助。如果您需要更多详细信息,请告诉我。

    【讨论】:

    • 这听起来像我需要的,我会尝试并告诉你,谢谢。
    • 所以我一直在使用此代码尝试修改它,但我无法摆脱的一件事是我在视图 sendMessage("MyGameObject","Spawn")' 上收到此消息, 'sendMessage' 未定义)所以我一直在尝试使用这个“gameInstance.SendMessage()”,但我仍然遇到同样的错误,我真的不知道为什么。
    • 您无需获取任何实例即可调用SendMessage。请注意,案件很重要。所以sendMessage 不同于SendMessage
    • 谢谢我修复了这个问题,但现在我的代码没有生成预制件,我认为我使用的参数错误,我如何使用超级字符串来实例化许多预制件?
    • Spawn() 方法中,您将收到一个data 字符串作为参数,它的值将是我们在javascript 中传递的Super string。您可以创建 switchDictionary 来决定您将生成哪个预制件。我有两个建议: 1. 在 Unity 中创建一个按钮并测试您的 Spawn() 方法是否按预期工作。 2. 在 Unity 中创建一个Text 并将data 参数的值放入其中,看看您是否从 javascript 接收到正确的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多