unity上传头像_unity3d 上传本地PC图片
网上有两个常用的方法,我先用了第一种。
第一种方法:
需要注意三点,首先导入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图片相关推荐
- 上传头像mysql_上传头像 - MVC5+EF6+MySql企业网盘实战 - 爱整理
写在前面 最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下. 示例 这里采用最简单 ...
- html 头像选择,html5点击上传头像选取本地图片上传代码
特效描述:html5 点击上传头像 选取本地图片 上传代码.html5点击上传头像,图片上传代码 代码结构 1. HTML代码 上传头像 //获取上传按钮 var input1 = document. ...
- SSM整合之企业级后台管理系统(17) - 上传头像后端部分
一.功能演示 二.需求分析 用户上传头像是一个常见的功能,相信大家不会感到陌生.要实现这个功能大概有这些需求: 点击"上传头像"占位图片后,弹出选择本地图片的窗口 选择图片后,在前 ...
- 完整的前后端 实现上传头像、压缩头像
本文是我在写上传头像功能后的一个详细的总结,用作以后可以回顾,可能较为繁琐,如果明白上传只想看压缩,可直接拉到文章后半部分. 文章目录 上传头像 上传头像准备工作 上传头像 上传头像路由配置 上传头像 ...
- Vue图片裁剪插件vue-cropper的使用,应用场景用户上传头像
文章目录 前言 一.安装和引入 二.Events And Methods 三.简单使用 四.实际应用(含本地图片下载) 前言 一个简单的用户上传头像的例子 功能:选择图片,设置裁剪位置,实时预览 一. ...
- python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)
python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...
- selenium小练习:自写利用 selenium 下载Google高清图片、大众点评自动传头像/评论
一. selenium 下载高清图片 1.版本介绍 python 3.7.4 selenium = 3.141.0 chromedriver=84.0.4147.30 2.保存 base64 图片格式 ...
- typecho本地上传头像_微信QQ抖音透明头像制作方法,还有不会的吗?
精彩内容每天更新 她搂着被子从床上坐起来,愣了十几秒,听到厨房有动静后,这才撒着脚往房间外跑,看到一抹修长背影在厨房里忙活. 邵允琛做好早餐从厨房出来,见陆瑶穿着睡裙站那,眉头皱了皱," ...
- Unity Android通过拍照和相册上传头像(图片)
Unity点击按钮调用AS中显示对话框选择是从相册中上传还是拍照上传,如果是相册直接获得路径传给Unity使用,如果是拍照,先拍照保存在本地,再将路径传递给Unity使用 Android中提供了Int ...
最新文章
- PHP开发APP接口(二)
- timestamp类型设置默认时间
- C++ 调试帮助简介
- Smart field 1 how is smartField controller loaded - how is main view defined in manifest.json
- Tensorflow报错:AttributeError: 'module' object has no attribute 'scalar_summary'
- 利用Layer组件弹出多个对话框(非嵌套)与关闭及刷新
- 正态分布函数_从微积分角度证明“正态分布密度函数”
- java date只保留年月日_java.util.Date、java.sql.Date、java.sql.Timestamp区别和总结
- 在Linux上进行动态注入 | LD_PRELOAD
- java 实现内存数据表_数据结构 Java中的内存
- UE4物理模块(二)---建立物体碰撞
- python中函数 reshape(-1,1)
- POJ 1635 树的最小表示法
- Atitit 并发技术的选项 attilax总结 艾龙 著 1. 三大并发模型	1 2. 从可读性考虑 优先使用 并行工作者 多线程模式,不要使用异步流水线模式	2 2.1. 多线程模式方便全局
- 【Hibernate】ch01Demo
- Real格式的影片如何分离、合并音频视频?
- 在Ubuntu中安装LiteIDE
- 手机写python爬虫_我用手机写了一个Python爬虫,爬下了《凡人修仙传》……
- Ubuntu18.04 运行velodyne
- HyperLedger Fabric - 超级账本(8)Node测试
热门文章
- 笔记:新一代高效视频编码H.265/HEVC原理、标准与实现
- 天作之合:水果与朗姆酒
- 待办日程用什么软件好 2022好用的便签记事日程管理软件推荐
- 常用JS效果 需要时更新。。。
- 白嫖银行?普通人为数不多的机会
- 《娱乐至死》读书笔记(part1)--深入一种文化的最有效途径是了解这种文化中用于会话的工具
- w7如何关闭计算机防火墙,win7怎么关闭防火墙 win7自带防火墙启用或关闭方法
- mysql从数据库误删.idb / .frm 文件,恢复数据方法
- 关于python赋值语句下列选项中描述正确的是_关于 Python 语句 P = –P,以下选项中描述正确的是________...
- Python爬虫伪装,请求头User-Agent池,和代理IP池搭建使用