unity3d发布WebGL格式读取Excel文件

unity3d本身可以读取excel文件,引入一个dll就可以了。但是当打包发布成webgl格式的时候,首先File就不能用了,所以必须借助JS来读取Excel,然后将读取的结果发送给unity3d。

html代码:

<!DOCTYPE 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 | GuoLu</title>
    <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 src="./js/xlsx.full.min.js"></script>
    <script>
      var gameInstance = UnityLoader.instantiate("gameContainer", "Build/guolu.json", {onProgress: UnityProgress});
	  function aa()
	  {
		document.getElementById("File").click();
	  }
	  
	    function bb(e)
	  {
		alert(e);
	  }
	  

	 /*
            FileReader共有4种读取方法:
            1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。
            2.readAsBinaryString(file):将文件读取为二进制字符串
            3.readAsDataURL(file):将文件读取为Data URL
            4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'
                         */
            var wb;//读取完成的数据
            var rABS = false; //是否将文件读取为二进制字符串

            function importf(obj) {//导入
                if(!obj.files) {
                    return;
                }
				//alert(obj.files[0].name);
                var f = obj.files[0];
                var reader = new FileReader();
				reader.readAsBinaryString(f);
                reader.onload = function(e) {
                    var data = e.target.result;
					 wb = XLSX.read(data, {
                            type: 'binary'
                        });
					
                    //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
                    //wb.Sheets[Sheet名]获取第一个Sheet的数据
                    document.getElementById("demo").innerHTML= JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) );
                };
				
                /*if(rABS) {
                    reader.readAsArrayBuffer(f);
                } else {
                    reader.readAsBinaryString(f);
                }*/
				//reader.readAsText(f);
				
            }

            function fixdata(data) { //文件流转BinaryString
                var o = "",
                    l = 0,
                    w = 10240;
                for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
                o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
                return o;
            }	

    </script>
  </head>
  <body>
    <div class="webgl-content">
      <div id="gameContainer" style="width: 1280px; height: 720px"></div>
      <div class="footer">
        <div class="webgl-logo"></div>
        <div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div>
        <div class="title">GuoLu</div>
      </div>
    </div>
	<div id="demo"></div>
	 <input type="file" id="File" style="display:none"  onchange="importf(this)">
  </body>
</html>

JS使用xlsx.full.min.js 将本地的excel文件解析出来,然后保存为json格式,发送给unity3d。unity读取json,注意unity自带的JsonUtility.FromJson读取json的方法有很多限制,有坑,需要本地创建两个类来读取。而且json的格式也必须是这样:

{
  "inforList":
  [
    {
      "name": "yy",
      "age": "100"
    },
    {
      "name": "zz",
      "age": "100"
    }
  ]
}

unity3d代码:

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

[System.Serializable]
public class JsonData
{
    public string name;
    public string age;
}
[System.Serializable]
public class Test
{
    public List<JsonData> inforList;
}


public class JsonTest : MonoBehaviour {

    // Use this for initialization
    void Start () {
        TextAsset ta = Resources.Load<TextAsset>("MyTestJson");
        Debug.Log(ta.text);
        Test list = JsonUtility.FromJson<Test>(ta.text);
        foreach (var item in list.inforList)
        {
            Debug.Log(item.name);
        }
    }
}

 

Unity3D是一款功能强大的游戏引擎,可以用来开发各种类型的游戏和应用程序。其中,导出WebGL格式Unity3D的一个重要功能,它使得我们可以将游戏或应用程序直接发布到Web上,让用户可以通过浏览器来访问和体验。 使用Unity3D导出WebGL格式非常简单。首先,我们需要确保在Unity中我们的项目已经设置好了所需的场景、模型、材质和脚本等。然后,我们可以选择菜单栏中的"Build Settings"选项,打开一个设置窗口。 在"Build Settings"窗口中,我们需要选择"WebGL"作为目标平台,并设置一些导出选项。例如,我们可以选择导出的文件名和保存的路径。我们还可以选择是否需要压缩文件,以及是否需要在导出过程中进行连接和优化操作。 当我们设置好导出选项后,只需点击"Build"按钮,Unity3D将开始导出我们的项目为WebGL格式。这个过程可能需要一些时间,具体取决于我们的项目大小和计算机性能。 完成导出后,Unity将生成一个文件夹,其中包含所有导出的WebGL文件。我们可以将这个文件夹上传到Web服务器上,然后用户可以通过使用任何兼容的浏览器访问我们的游戏或应用程序。 使用Unity3D导出WebGL格式,我们可以将我们的项目变成一个跨平台的应用程序,用户可以通过使用不同设备上的Web浏览器来访问和播放。这种格式的导出不仅便于使用,而且还可以保留游戏或应用程序的许多功能和性能,使其在Web上的运行效果更加流畅和逼真。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值