当前位置: 首页 > news >正文

网站做响应式还是移动端广告创意设计模板

网站做响应式还是移动端,广告创意设计模板,青岛免费建网站,管理咨询是干嘛的沙盒#xff1a;浏览器的安全机制#xff0c;浏览器内的进程不能直接访问本地计算机中的硬盘等硬件或数据。必须通过js作为中间层实现。需求#xff1a;通过一个按钮#xff0c;点击后选择文件传到webgl进程中。前置说明#xff1a;需要有webgl模版等基础配备#xff0c;…沙盒浏览器的安全机制浏览器内的进程不能直接访问本地计算机中的硬盘等硬件或数据。必须通过js作为中间层实现。需求通过一个按钮点击后选择文件传到webgl进程中。前置说明需要有webgl模版等基础配备已经可以发布webgl程序。借鉴http://t.csdnimg.cn/p7de5 一、在__Internal.jslib中添加如下代码块 mergeInto(LibraryManager.library, {LoadFile:function (gameobjectName,fitter) {var gameobjectNameStrPointer_stringify(gameobjectName);var fitterStrPointer_stringify(fitter);console.log(GetSelectFileURL);console.log(需要被发送的物体名称转化);console.log(gameobjectNameStr);console.log(需要筛选文件类型转化);console.log(fitterStr);var fileInput document.getElementById(load);//通过id获取创建好的input元素if(!fileInput){var fileInput document.createElement(input);//创建input元素console.log(创建input元素);fileInput.setAttribute(id, load);//给创建的input设置idfileInput.setAttribute(type, file);fileInput.setAttribute(style,display:none;);fileInput.setAttribute(style,visibility:hidden;); fileInput.setAttribute(multiple, );fileInput.disabledtrue;//使input元素不可点击否则会导致页面上所有位置都可唤起文件对话框document.body.appendChild(fileInput);}fileInput.acceptfitterStr;fileInput.disabledfalse;//设置input可点击否则无法通过click()打开文件对话框fileInput.click()//打开文件对话框fileInput.onclick function (event) {this.value null;};fileInput.onchange function (event) {//如果需要在unity中获取文件内容在onchange中获取后通过SendMessage()传回给unityvar files event.target.files;var res{Path:URL.createObjectURL(files[0]),FileName:files[0].name};gameInstance.SendMessage(gameobjectNameStr, FileDialogResult, JSON.stringify(res));}document.onmouseup function() {fileInput.click();document.onmouseup null;}fileInput.disabledtrue;//结束时再次设置input不可点击保证点击其他位置无法打开文件对话框//确保只有点击按钮2时才能打开文件对话框}, }); 代码说明 该js脚本中LoadFile函数名接收一个游戏物体名称和过滤文件格式字符串。 游戏物体名称用于在该js函数中发送广播叫该游戏物体执行指定挂在在该物体mono脚本上的指定方法。 注意所有C#传给js的字符串都需要用Pointer_stringify过一遍才能转化成js识别的字符串。 主要逻辑为js动态创建一个元素设置交互属性定义选择文件事件函数在函数内部用 gameInstance.SendMessage(gameobjectNameStr, FileDialogResult, JSON.stringify(res)); 其中gameInstance是unity运行实例有的叫unityInstance或者别的东西具体看自己js模版中定义的变量。gameobjectNameStr转化过后的游戏物体名称FileDialogResult游戏物体上的需要被执行的函数JSON.stringify(res)该函数接收的一个参数这里我封装为一个json对象可以传递多个参数传过去后解析为一个文件信息类。 二、调用 在ui按钮中挂载脚本这里文件格式以表格为例 public class JSFileInfo{public string Path { get; set; }public string FileName { get; set; }} using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using Newtonsoft.Json; using UnityEngine; using UnityEngine.Networking;public class LoadExlBtn : MonoBehaviour {public string fileFullPath;[DllImport(__Internal)]private static extern void LoadFile(string gameobjectName,string fitter);public void Add_File(){if (Application.platform RuntimePlatform.WebGLPlayer){LoadFile(gameObject.name,.xls,.xlsx);//web端调用方法}}public void FileDialogResult(string JsFileInfoStr){Debug.Log(JsFileInfoStr);JSFileInfo jsFileInfo JsonConvert.DeserializeObjectJSFileInfo(JsFileInfoStr);Debug.Log(jsFileInfo.Path);Debug.Log(jsFileInfo.FileName);StartCoroutine(LoadData(jsFileInfo,null));}IEnumerator LoadData(JSFileInfo jsFileInfo,ActionFileStream action){UnityWebRequest request UnityWebRequest.Get(jsFileInfo.Path);//创建文件夹string dirPath Path.Combine(Application.persistentDataPath, Exls);Debug.Log(将被存至目录dirPath);if (!Directory.Exists(dirPath)){Directory.CreateDirectory(dirPath);}string fullPath Path.Combine(dirPath, jsFileInfo.FileName);request.downloadHandler new DownloadHandlerFile(fullPath);//路径文件名Debug.Log(复制到沙盒ing);yield return request.SendWebRequest();if (request.resultUnityWebRequest.Result.Success){Debug.Log(复制到沙盒完成);fileFullPath fullPath;FileStream fs new FileStream(fullPath, FileMode.Open);Debug.Log(fs.Length);//byteDebug.Log(fs.Name);//路径名if (action!null){action(fs);}fs.Close();FileInfo f new FileInfo(fullPath);Debug.Log(f.Name);}else{Debug.Log(request.error);} }}主要逻辑 编辑器中添加按钮监听Add_File调用外部js中的LoadFile传入本按钮名称、文件过滤格式。在js中创建点击元素模拟点击获取文件对于浏览器沙盒来说的url是blobxxx的形式广播消息给这个按钮的FileDialogResult。在FileDialogResult中开协程用UnityWebRequest将文件存到浏览器沙盒中的persistentDataPath。如果是图片文字等简单的东西可以不用存为实体文件直接用api IEnumerator LoadTexture2D(string url, ActionTexture2D taskCompletedCallBack){UnityWebRequest request UnityWebRequestTexture.GetTexture(url);yield return request.SendWebRequest();if (request.isHttpError || request.isNetworkError){ }else{var texture DownloadHandlerTexture.GetContent(request);taskCompletedCallBack(texture);}} 在yield return request.SendWebRequest()后打开文件流处理文件逻辑。
http://www.pierceye.com/news/257909/

相关文章:

  • 做农村电商要多少钱南宁软件优化网站
  • 网站系统建设技术服务费网站建设 专项资金变更
  • 网站建设画册怎么用eclipse做网页
  • 百度网站安全检测平台广州番禺营销型网站建设
  • 杭州大的做网站的公司甘肃省住房和城乡建设部网站首页
  • 网站建设与网页设计考试题棋牌软件开发搭建
  • 短链接生成网址wordpress主叶SEO优化
  • 免费的cms视频网站做cpa怎么建立自己网站
  • 在哪里找做网站的北京的招聘网站有哪些
  • 做旅行网站aspx网站开发
  • 网站接入服务器商查询wordpress更换端口
  • 网站网页设计师武义县网站建设
  • 中铁建设集团有限公司官网建站到网站收录到优化
  • 做seo网站要多少钱网页设计师好吗
  • 建设部网站 绿色建筑评价表哪里页面设计培训好
  • 西部数码网站源码虹桥做网站公司
  • 生鲜网站开发wordpress mysql 链接
  • 做网站是怎么挣钱的网站建设福永附近网络公司
  • 关于网站制作的评价.net网站制作综合实训报告
  • 合肥专业制作网站科技创新绘画作品图片
  • 站内推广的主要目的是商业空间设计心得体会
  • 网站建设丨金手指15phpcms建设网站
  • 怎么网上推广自己的产品郑州seo优化外包顾问阿亮
  • 灵台门户网站建设网站开发费用会计分录
  • wordpress替换公共js北京seo推广服务
  • 公司付的网站费怎么做分录黑色网站配色
  • 体育门户网站源码峰峰做网站
  • 山西网站建设多少钱电商网站建设需要
  • 海西电子商务网站建设wordpress 主题宽度
  • 网站建设首选公司wordpress需要mysql