网上有两个常用的方法,我先用了第一种。

第一种方法:

需要注意三点,首先导入system.window.Forms.dll库,导进去后一定记得要修改playersetting下的optimization->API compatibility level为.NET 2.0,至于为什么改成这样,可以参考unity3d 的解释:http://game.ceeger.com/Manual/MobileDotnet.html。

还要注意一点:加载的本地图片地址一定不能带有中文路径

另外,www新建的时候要加上“file://” + url;

WWW www = new WWW("file://" + url); //注意要加上"file://"

只需要一个脚本,其中代码如下:

using UnityEngine;

using System.Collections;

using System.Windows.Forms;

using System.IO;

public class UploadImg: MonoBehaviour {

public Texture2D img = null;

void OnGUI()

{

if (GUI.Button(new Rect(0, 0, 100, 20), "选择文件"))

{

OpenFileDialog od = new OpenFileDialog();

od.Title = "请选择头像图片";

od.Multiselect = false;

od.Filter = "图片文件(*.jpg,*.png,*.bmp)|*.jpg;*.png;*.bmp";

if (od.ShowDialog() == DialogResult.OK)

{

Debug.Log(od.FileName);

StartCoroutine(GetTexture(od.FileName));

}

}

if (img != null)

{

GUI.DrawTexture(new Rect(0, 20, img.width/2, img.height/2), img);

}

}

IEnumerator GetTexture(string url)

{

WWW www = new WWW("file://" + url); //注意要加上"file://"

yield return www;

if (www.isDone)

{

img = www.texture;

}

}

}

效果是这样的,但是感觉和win7风格差的太远

第二种方法看起来要炫多了:

需要两个脚本。

OpenFileName.cs如下:

using UnityEngine;

using System.Collections;

using System;

using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]

public class OpenFileName

{

public int structSize = 0;

public IntPtr dlgOwner = IntPtr.Zero;

public IntPtr instance = IntPtr.Zero;

public String filter = null;

public String customFilter = null;

public int maxCustFilter = 0;

public int filterIndex = 0;

public String file = null;

public int maxFile = 0;

public String fileTitle = null;

public int maxFileTitle = 0;

public String initialDir = null;

public String title = null;

public int flags = 0;

public short fileOffset = 0;

public short fileExtension = 0;

public String defExt = null;

public IntPtr custData = IntPtr.Zero;

public IntPtr hook = IntPtr.Zero;

public String templateName = null;

public IntPtr reservedPtr = IntPtr.Zero;

public int reservedInt = 0;

public int flagsEx = 0;

}

public class WindowDll

{

[DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]

public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);

public static bool GetOpenFileName1([In, Out] OpenFileName ofn)

{

return GetOpenFileName(ofn);

}

}

UploadImage.cs如下:

using UnityEngine;

using System.Collections;

using System.Runtime.InteropServices;

public class Upload : MonoBehaviour {

public Texture2D img = null;

private bool click = false;

void OpenDialog()

{

click = true;

}

void EnterImage()

{

OpenFileName ofn = new OpenFileName();

ofn.structSize = Marshal.SizeOf(ofn);

ofn.filter = "All Files\0*.*\0\0";

ofn.file = new string(new char[256]);

ofn.maxFile = ofn.file.Length;

ofn.fileTitle = new string(new char[64]);

ofn.maxFileTitle = ofn.fileTitle.Length;

ofn.initialDir = UnityEngine.Application.dataPath;//默认路径

ofn.title = "Open Project";

ofn.defExt = "JPG";//显示文件的类型

//注意 一下项目不一定要全选 但是0x00000008项不要缺少

ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;//OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR

if(WindowDll.GetOpenFileName(ofn))

{

StartCoroutine(GetTexture(ofn.file));

}

}

IEnumerator GetTexture(string url)

{

WWW wwwTexture = new WWW ("file://" + url);

yield return wwwTexture;

if(wwwTexture.isDone)

img = wwwTexture.texture;

}

void OnGUI()

{

if(click)

{

EnterImage();

click = false;

}

if (img != null)

GUI.DrawTexture (new Rect(Screen.width/2 - img.width/2,Screen.height/2 - img.height,img.width,img.height),img);

}

}

unity上传头像_unity3d 上传本地PC图片相关推荐

  1. 上传头像mysql_上传头像 - MVC5+EF6+MySql企业网盘实战 - 爱整理

    写在前面 最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下. 示例 这里采用最简单 ...

  2. html 头像选择,html5点击上传头像选取本地图片上传代码

    特效描述:html5 点击上传头像 选取本地图片 上传代码.html5点击上传头像,图片上传代码 代码结构 1. HTML代码 上传头像 //获取上传按钮 var input1 = document. ...

  3. SSM整合之企业级后台管理系统(17) - 上传头像后端部分

    一.功能演示 二.需求分析 用户上传头像是一个常见的功能,相信大家不会感到陌生.要实现这个功能大概有这些需求: 点击"上传头像"占位图片后,弹出选择本地图片的窗口 选择图片后,在前 ...

  4. 完整的前后端 实现上传头像、压缩头像

    本文是我在写上传头像功能后的一个详细的总结,用作以后可以回顾,可能较为繁琐,如果明白上传只想看压缩,可直接拉到文章后半部分. 文章目录 上传头像 上传头像准备工作 上传头像 上传头像路由配置 上传头像 ...

  5. Vue图片裁剪插件vue-cropper的使用,应用场景用户上传头像

    文章目录 前言 一.安装和引入 二.Events And Methods 三.简单使用 四.实际应用(含本地图片下载) 前言 一个简单的用户上传头像的例子 功能:选择图片,设置裁剪位置,实时预览 一. ...

  6. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

  7. selenium小练习:自写利用 selenium 下载Google高清图片、大众点评自动传头像/评论

    一. selenium 下载高清图片 1.版本介绍 python 3.7.4 selenium = 3.141.0 chromedriver=84.0.4147.30 2.保存 base64 图片格式 ...

  8. typecho本地上传头像_微信QQ抖音透明头像制作方法,还有不会的吗?

       精彩内容每天更新 她搂着被子从床上坐起来,愣了十几秒,听到厨房有动静后,这才撒着脚往房间外跑,看到一抹修长背影在厨房里忙活. 邵允琛做好早餐从厨房出来,见陆瑶穿着睡裙站那,眉头皱了皱," ...

  9. Unity Android通过拍照和相册上传头像(图片)

    Unity点击按钮调用AS中显示对话框选择是从相册中上传还是拍照上传,如果是相册直接获得路径传给Unity使用,如果是拍照,先拍照保存在本地,再将路径传递给Unity使用 Android中提供了Int ...

最新文章

  1. PHP开发APP接口(二)
  2. timestamp类型设置默认时间
  3. C++ 调试帮助简介
  4. Smart field 1 how is smartField controller loaded - how is main view defined in manifest.json
  5. Tensorflow报错:AttributeError: 'module' object has no attribute 'scalar_summary'
  6. 利用Layer组件弹出多个对话框(非嵌套)与关闭及刷新
  7. 正态分布函数_从微积分角度证明“正态分布密度函数”
  8. java date只保留年月日_java.util.Date、java.sql.Date、java.sql.Timestamp区别和总结
  9. 在Linux上进行动态注入 | LD_PRELOAD
  10. java 实现内存数据表_数据结构 Java中的内存
  11. UE4物理模块(二)---建立物体碰撞
  12. python中函数 reshape(-1,1)
  13. POJ 1635 树的最小表示法
  14. Atitit 并发技术的选项 attilax总结 艾龙 著 1. 三大并发模型 1 2. 从可读性考虑 优先使用 并行工作者 多线程模式,不要使用异步流水线模式 2 2.1. 多线程模式方便全局
  15. 【Hibernate】ch01Demo
  16. Real格式的影片如何分离、合并音频视频?
  17. 在Ubuntu中安装LiteIDE
  18. 手机写python爬虫_我用手机写了一个Python爬虫,爬下了《凡人修仙传》……
  19. Ubuntu18.04 运行velodyne
  20. HyperLedger Fabric - 超级账本(8)Node测试

热门文章

  1. 笔记:新一代高效视频编码H.265/HEVC原理、标准与实现
  2. 天作之合:水果与朗姆酒
  3. 待办日程用什么软件好 2022好用的便签记事日程管理软件推荐
  4. 常用JS效果 需要时更新。。。
  5. 白嫖银行?普通人为数不多的机会
  6. 《娱乐至死》读书笔记(part1)--深入一种文化的最有效途径是了解这种文化中用于会话的工具
  7. w7如何关闭计算机防火墙,win7怎么关闭防火墙 win7自带防火墙启用或关闭方法
  8. mysql从数据库误删.idb / .frm 文件,恢复数据方法
  9. 关于python赋值语句下列选项中描述正确的是_关于 Python 语句 P = –P,以下选项中描述正确的是________...
  10. Python爬虫伪装,请求头User-Agent池,和代理IP池搭建使用