最新判断Unity Webgl 运行在PC端还是手机端方法

最新判断Unity Webgl 运行在PC端还是手机端方法

1.为了实现unitywebgl对pc端和手机端的识别,我在网上找了一些资料,都已经过时了
这种过时的方法大概是这样的
首先是在unity中实现相关书写
最新判断Unity Webgl 运行在PC端还是手机端方法_第1张图片

在导出的HTML中进行修改,修改如下:


<html lang="en-us">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Unity WebGL Player | TestConnectiontitle>
    <link rel="shortcut icon" href="TemplateData/favicon.ico">
    <link rel="stylesheet" href="TemplateData/style.css">
    <script src="TemplateData/UnityProgress.js">script>  
    <script src="Build/UnityLoader.js">script>
    <script>
      var gameInstance = UnityLoader.instantiate("gameContainer", "Build/JudagePCorAndroid.json", {onProgress: UnityProgress});
			 function Reset() 
   			 {
   			    var canvas = document.getElementById("#canvas"); 
   			    canvas.height= document.documentElement.clientHeight;
   			    canvas.width = document.documentElement.clientWidth; 
   			 }
   			function ShowObj() //承接Unity
   			 {
   				   var PC = IsPC();
   				   gameInstance.SendMessage("ShowManager", "GetInformation",PC+'_'+1); //参数依次是:场景中挂载脚本的物体,脚本中与html交互的方法,需要传入的参数.
   			 }	 
   			function IsPC() // 判断目前运行平台的方法
   			{
   					 var userAgentInfo = navigator.userAgent;
   					 var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
   					 var flag = true;
   					 for (var v = 0; v < Agents.length; v++)
   					 {
   						  if (userAgentInfo.indexOf(Agents[v]) > 0)
   							{
   								  flag = false;
   			            break;
   							}
   					 }
   					 return flag;
   					    			}			
       script>
     head>
     <body onload="Reset()" onresize="Reset()">
         
<div id="gameContainer" style="width: 100%; height: 100%">div> div> body> html>

然后在打包后的Html代码做修改。(这种方法已经过时了)。

下面来说说最新的方法

首先:注意了! 该方法需要unitywebgl导出后才能看到效果!!!(特别注意,在unity中运行 会显示 大概意思是 找不到HelloFloat 方法)
1.首先需要写一个JS的脚本,主要是调用mergeInto();方法,第一个参数不用变,第二个参数就是JS的方法集合。写完之后将这个文件的后缀改为.jslib,放到Plugins文件夹中


```javascript
mergeInto(LibraryManager.library,
 {
     HelloFloat: function()
     {
     var userAgentInfo = navigator.userAgent;      
        var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];    
        var flag = true;       
        for (var v = 0; v < Agents.length; v++)
        {        
         if (userAgentInfo.indexOf(Agents[v]) > 0)
         {   
          return 1; //如果是手机端就返回1
           break;       
         }     
        }       
        return 2; //如果是pc就返回2
    },
     });
这段代码的意思就是 如果是移动设备就返回1  如果是pc端打开就 返回2

最新判断Unity Webgl 运行在PC端还是手机端方法_第2张图片

在unity中脚本这样写的

using UnityEngine;
using System.Runtime.InteropServices;
public class TestJS1 : MonoBehaviour
{
    [DllImport("__Internal")]
    private static extern float HelloFloat();
    
   void Start()
    {
    }
    void OnGUI()
    {
        GUIStyle gUIStyle = new GUIStyle();
        gUIStyle.fontSize = 20;
        float f = HelloFloat();
        GUI.Label(new Rect(500, 200, 500, 500), f.ToString(), gUIStyle);
    }
}

效果图:

手机端

最新判断Unity Webgl 运行在PC端还是手机端方法_第3张图片

电脑端:

最新判断Unity Webgl 运行在PC端还是手机端方法_第4张图片

## 老方法与新方法的不同点
老方法是在导出的Html中进行修改 来实现对移动端和pc端的识别
而新方法 是在unity中直接设置对移动端和pc端的识别





你可能感兴趣的:(最新判断Unity Webgl 运行在PC端还是手机端方法)