国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue項目結合unity webgl通信(親身實踐 Unity2022.3版本)

這篇具有很好參考價值的文章主要介紹了vue項目結合unity webgl通信(親身實踐 Unity2022.3版本)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????在參考網上眾多資料后,終于將Vue與Unity Webgl雙向通信的功能完成。在此過程中遇到了很多問題,故記錄下整體流程。

方案實現(xiàn):

1.unity端實現(xiàn)一個jslib文件預定義函數(shù)作為橋接。

2.c#使用DllImport引入和調用預定義的函數(shù)。

3.web端使用js定義被調用函數(shù)。

unity vue,vue.js,unity,webgl

1.Unity Webgl程序嵌入vue

2.Unity -> vue通信

3.vue -> Unity通信

1.Unity Webgl程序嵌入vue

1)在Unity打包生成webgl項目后,將webgl文件夾內容復制到vue項目目錄下的static文件夾中

unity vue,vue.js,unity,webgl

添加Web.Config文件,內容如下:

<?xml version="1.0" encoding="utf-8"?>
<!--
  有關如何配置 ASP.NET 應用程序的詳細信息,請訪問
  https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>  
  <system.webServer>
    <httpProtocol>
      <!-- 允許跨域配置 -->
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="X-Requested-With,Content-Type,Authorization" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE,OPTIONS" />
        <add name="Access-Control-Allow-Credentials" value="true" />
      </customHeaders>
    </httpProtocol>
        <staticContent>
            <remove fileExtension=".mem" />  
            <remove fileExtension=".data" />  
            <remove fileExtension=".unity3d" />  
            <remove fileExtension=".jsbr" />  
            <remove fileExtension=".membr" />  
            <remove fileExtension=".databr" />  
            <remove fileExtension=".unity3dbr" />  
            <remove fileExtension=".jsgz" />  
            <remove fileExtension=".memgz" />  
            <remove fileExtension=".datagz" />  
            <remove fileExtension=".unity3dgz" />  
            <remove fileExtension=".json" />  
            <remove fileExtension=".unityweb" />  
           
            <mimeMap fileExtension=".mem" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".data" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".unity3d" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".jsbr" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".membr" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".databr" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".unity3dbr" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".jsgz" mimeType="application/x-javascript; charset=UTF-8" />  
            <mimeMap fileExtension=".memgz" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".datagz" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".unity3dgz" mimeType="application/octet-stream" />  
            <mimeMap fileExtension=".json" mimeType="application/json; charset=UTF-8" />  
            <mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" />  
        </staticContent>
  </system.webServer>
</configuration>

2)在vue項目中以iframe的方式調用

<iframe src="/static/Unity/index.html"
     ref="unityvue">
 </iframe>

2.Unity -> vue通信

1)在unity創(chuàng)建好項目后,在Assets目錄下新建Plugins文件夾,創(chuàng)建一個jslib文件,可以用txt創(chuàng)建文件,文件名加后綴名為“xxx.jslib”,切記后綴名更改為jslib

jslib當作中間者,unity與它通信,前端也與它通信,在此基礎上三者之間進行了通信對接

unity vue,vue.js,unity,webgl

2)在剛剛創(chuàng)建的jslib文件里,添加以下代碼:

mergeInto(LibraryManager.library,{?? 
    //Unity內自定義調用方法名 PostScore(string sceneName)?
?? ?PostScore: function (sceneName) { 
?? ? strs = Pointer_stringify(sceneName);   //字符串需用Pointer_stringify轉換
?? ? GetScore(strs);                        //前端自定義方法名GetScore(strs)
?? ?},?? ?
});

3)在unity中,新建一個腳本,添加命名空間using System.Runtime.InteropServices; 并添加以下C#代碼:

[DllImport("__Internal")]
    private static extern void PostScore(string currentScene);  //當前場景

在unity中調用PostScore()方法,即調用jslib里的PostScore()方法

unity vue,vue.js,unity,webgl

4)打包時在Player Settings->Player->Publishing Settings中將壓縮格式禁用,平臺選擇Webgl

unity vue,vue.js,unity,webgl

5)在unity打包程序后,在index.html中添加GetScore()方法unity vue,vue.js,unity,webgl

以上是unity基礎的向前端通信方式。

此時我們在網頁嵌入的Unity頁面中點擊交互按鈕時即可觸發(fā)PostScore(str)方法,將數(shù)據(jù)從Unity頁面?zhèn)鬏數(shù)角岸薶tml中。

unity vue,vue.js,unity,webgl

3.vue -> Unity通信

?官方文檔

前端頁面向unity頁面?zhèn)髦敌栌玫絬nityInstance.SendMessage()函數(shù),調用格式如下:

SendMessage(unityObject,unityMethodName,value)

unityObject——unity腳本掛載對象名

unityMethodName——unity腳本內調用方法名(需為public方法)

value——前端需要傳出的值

1) 在Unity2022.3版本打包生成的webgl中不能直接找到unityInstance對象,需要在index.html頁面作如下處理,自定義一個myGameInstance對象用于獲取unityInstance

var myGameInstance = null;

createUnityInstance(document.querySelector("#unity-canvas"), {
        ...//省略代碼
      }).then((unityInstance) => {
        myGameInstance = unityInstance;
      });

unity vue,vue.js,unity,webgl

2)之后就能愉快的在vue頁面調用該方法了~

const refreshAllItem = ()=>{
      console.log('當前unity對象', unityvue.value)
      unityvue.value.contentWindow.myGameInstance.SendMessage('WeatherControl', 'TransToAfternoon', "")
}

參考文檔

在此感謝以下作者的參考資料~

網頁傳遞參數(shù)到Unity WebGL ,WebGL傳遞參數(shù)到網頁_webgl unityinstance_先生沉默先的博客-CSDN博客

WebGL給Unity傳遞參數(shù)問題1: Cannot read properties of undefined (reading ‘SendMessage‘)_先生沉默先的博客-CSDN博客

Unity(WebGL)與JS通訊2022最新姿勢 - 知乎

web通信 - web 調用unity方法_嗶哩嗶哩_bilibili文章來源地址http://www.zghlxwxcb.cn/news/detail-651609.html

到了這里,關于vue項目結合unity webgl通信(親身實踐 Unity2022.3版本)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Unity3D WebGL平臺使用WebSocket通信的方法和示例

    Unity3D WebGL平臺使用WebSocket通信的方法和示例

    ? ? ? 之前在WebGL平臺和服務端交互的時候使用的是UnityWebRequest,通過WebAPI的方式進行交互,后來發(fā)現(xiàn)可以用WebSocket交互后就果斷換了WebSocket。 一、Unity3D客戶端 我在Unity端使用的是 NativeWebSocket NativeWebSocket下載地址 直接導入Unity即可, 下面是適配的代碼,直接掛載在GameObject。

    2024年02月11日
    瀏覽(26)
  • Unity打包WebGL: 導入Vue

    Unity打包WebGL: 導入Vue

    1.1 任務 記錄將 Unity 項目打包成 WebGL ,并集成到 Vue 項目中的過程。 1.2 環(huán)境 Unity : 2021.3 Vue : 2 2.1 UI 界面 2.2 添加插件 構建 WebGL 項目需要添加一個 .jslib 文件,用于 Unity 腳本函數(shù)與 JavaScript 函數(shù)交互 詳細內容參考:Unity(WebGL)與JS通訊2022最新姿勢 web.jslib 文件內容 2.3 添加腳

    2024年02月11日
    瀏覽(18)
  • Unity webgl 嵌入Vue實現(xiàn)過程

    Unity webgl 嵌入Vue實現(xiàn)過程

    Unity webgl嵌入到前端網頁中,前端通過調用Unity webgl內方法實現(xiàn)需要展示的功能,前端點擊Unity webgl內的交互點,Unity webgl返回給前端一些需要的數(shù)據(jù)。 例如:當我們需要在三維場景中展示庫區(qū)中一些監(jiān)控設備的部署位置,通過點擊三維場景中的監(jiān)控按鈕打開當前監(jiān)控設備的實

    2024年02月05日
    瀏覽(29)
  • vue項目接入unity3D模塊并進行數(shù)據(jù)通信

    vue項目接入unity3D模塊并進行數(shù)據(jù)通信

    unity工程師會提供一個前端可使用的包,將其放在vue項目的 public 下,我這里以 unity 文件夾命名

    2024年02月01日
    瀏覽(20)
  • 基于Unity開發(fā)WebGL項目加載AB包(三)

    基于Unity開發(fā)WebGL項目加載AB包(三)

    在前兩篇文章中,我們分別了解了WebGL如何通過StreamingAssets加載AB包資源(鏈接:基于Unity開發(fā)WebGL項目加載AB包(一)_梵高先森丶的博客-CSDN博客)和如何通過局域網(本地服務器)加載AB包資源(鏈接:基于Unity開發(fā)WebGL項目加載AB包(二)_梵高先森丶的博客-CSDN博客),那么本文,

    2024年02月13日
    瀏覽(23)
  • Unity Webgl項目判斷當前是手機還是電腦運行

    Unity Webgl項目判斷當前是手機還是電腦運行

    首先:注意了! 該方法需要unitywebgl導出后才能看到效果?。。?特別注意,在unity中運行 會顯示 大概意思是 找不到HelloFloat 方法) 首先需要寫一個JS的腳本,主要是調用mergeInto();方法,第一個參數(shù)不用變,第二個參數(shù)就是JS的方法集合。寫完之后將這個文件的后綴改為.jslib,名稱

    2024年03月13日
    瀏覽(84)
  • 【Unity】3D貪吃蛇游戲制作/WebGL本地測試及項目部署

    【Unity】3D貪吃蛇游戲制作/WebGL本地測試及項目部署

    本文是Unity3D貪吃蛇游戲從制作到部署的相關細節(jié) 項目開源代碼:https://github.com/zstar1003/3D_Snake 試玩鏈接:http://xdxsb.top/Snake_Game_3D 效果預覽: 試玩鏈接中的內容會和該效果圖略有不同,后面會詳細說明。 經典貪吃蛇游戲:蛇身隨著吃食物的增加不斷變長,通過A/D或方向鍵←→

    2024年02月07日
    瀏覽(17)
  • Unity-Linux部署WebGL項目MIME類型添加

    Unity-Linux部署WebGL項目MIME類型添加

    在以往的文章中有提到過使用IIS部署WebGL添加MIME類型使WebGL項目在瀏覽器中能夠正常加載,那么如果咱們做的是商業(yè)項目,往往是需要部署在學?;蛘咴品掌魃厦娴?,大部分情況下如果項目有接口或者后臺管理系統(tǒng),后臺基本都會使用Linux系統(tǒng),那么對于Unity開發(fā)人員來說就

    2024年02月13日
    瀏覽(22)
  • Unity WebGL項目打包后本地打開報錯問題解決方法

    Unity WebGL項目打包后本地打開報錯問題解決方法

    在Unity打包WebGL項目后,本地打開html頁面出現(xiàn)錯誤提示。 Failed to download file Build/Unity Web.data.gz. Loading web pages via a file:// URL without a web server is not supported by this browser. ? 在網上試了好幾種方法,綜合起來終于跑起來了。以下是解決步驟: 1. 打開Web服務 ,打開控制面板--程序--啟

    2024年02月14日
    瀏覽(161)
  • Unity之webgl端通過vue3接入騰訊云聯(lián)絡中心SDK

    Unity之webgl端通過vue3接入騰訊云聯(lián)絡中心SDK

    騰訊云聯(lián)絡中心SDK:云聯(lián)絡中心 Web-SDK 開發(fā)指南-文檔中心-騰訊云 (tencent.com) ? ?1.1 對其進行解壓 ? ?1.2根據(jù)文檔操作 查看README.md,根據(jù)說明設置server下的dev.js里的相關參數(shù)。 然后打開電腦終端,cd到項目的路徑: ? 安裝依賴 ? ? 運行 ?? 1.3 運行demo 復制http://127.0.0.1:5173

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包