Unity3d打开文件选择对话框
2015-07-30 21:47
483 查看
如何在unity3d中选择本地文件呢,网上有介绍使用OpenFileDialog的方法来调用windows的文件选择对话框,但是要弹出windows窗口,这对于在全屏模式下选择文件来说界面就有些不太友好了。为了使用unity3中元素显示文件选择对话框,本人封装了一个dll文件可嵌入unit3d用于文件选择,界面还可以自己修改。
效果如图:
![](http://img.blog.csdn.net/20150730215219518?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
,左边就是一个文件选择窗口,可以选择指定类型的文件,组件还支持播放本地视频文件,这两个功能可以免费使用。
原理:unity3多中显示框架,在NN视频组件中显示(中间白色区域的)目录和文件列表。通过图片的方式显示出来。部分代码如下:
显示文件选择窗口:
//选择文件
if(bSelectFile)
{
fileDialog.windowDialog=GUI.Window (100,fileDialog.windowDialog, myFileWindow,"");
}
2、用图像显示目录和文件列表:
UInt32 vsize= NCGetVideo (-1, fileDialog.nvbyts, fileDialog.pvrtcBytes);
if (vsize!=0) { //有视频
UInt32 cx = vsize >> 16;
UInt32 cy = vsize & 0xffff;
if (cx * cy * 3 != fileDialog.nvbyts) { //新的大小
fileDialog.nvbyts=cx * cy * 3;
fileDialog.pvrtcBytes = new byte[fileDialog.nvbyts];
fileDialog.texture2D = new Texture2D ((int)cx,(int)cy, TextureFormat.RGB24, false);
onText("file dialog size:"+cx+":"+cy);
return;
}
fileDialog.texture2D.LoadRawTextureData (fileDialog.pvrtcBytes);
fileDialog.texture2D.Apply ();
Rect rc=fileDialog.windowDialog;
rc.x=2;
rc.y=20;
rc.width=320; //不能缩放
rc.height=400;
GUI.DrawTexture (rc, fileDialog.texture2D, ScaleMode.StretchToFill, true, 10.0f);
}
3、响应鼠标操作:当鼠标点击时获取点击的文件名称,移动时高亮显示鼠标下的文件名称
bool bMouseDown = Input.GetMouseButtonDown (0);
bool bMouseMove = Input.GetMouseButton (0);
bool bMouseUp = Input.GetMouseButtonUp (0);
float x=Input.mousePosition.x;
float y=Screen.height-Input.mousePosition.y;
if(bMouseDown)
{
filex=x;
filey=y;
nPath=NCMouseEvent(1,(Int32)x,(Int32)y,sPath);
}
else if(bMouseUp)
{
nPath=NCMouseEvent(3,(Int32)x,(Int32)y,sPath);
}
else
{
if(filex!=x||filey!=y)
{
filex=x;
filey=y;
if(bMouseMove)
NCMouseEvent(2,(Int32)x,(Int32)y,sPath);
else
NCMouseEvent(4,(Int32)x,(Int32)y,sPath);
}
}
}
if(nPath>0)
{
filePath= System.Text.Encoding.Unicode.GetString(sPath,0,nPath);
var pos=filePath.LastIndexOf("\\");
if(pos==filePath.Length-1) //目录
{
fileInput="";
}
else{
fileInput=filePath.Substring(pos+1);
filePath=filePath.Substring(0,pos+1);
}
}
}
该组件还可以用于播放视频和,
![](http://img.blog.csdn.net/20150730220424280?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
视频聊天
![](http://img.blog.csdn.net/20150730220323607?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
,直接下载源代码看吧,打开如下地址,右边下载unity3d二次开发源码,这里不知道怎么上传文件。
http://www.enen6.com/GameV.htm
效果如图:
,左边就是一个文件选择窗口,可以选择指定类型的文件,组件还支持播放本地视频文件,这两个功能可以免费使用。
原理:unity3多中显示框架,在NN视频组件中显示(中间白色区域的)目录和文件列表。通过图片的方式显示出来。部分代码如下:
显示文件选择窗口:
//选择文件
if(bSelectFile)
{
fileDialog.windowDialog=GUI.Window (100,fileDialog.windowDialog, myFileWindow,"");
}
2、用图像显示目录和文件列表:
UInt32 vsize= NCGetVideo (-1, fileDialog.nvbyts, fileDialog.pvrtcBytes);
if (vsize!=0) { //有视频
UInt32 cx = vsize >> 16;
UInt32 cy = vsize & 0xffff;
if (cx * cy * 3 != fileDialog.nvbyts) { //新的大小
fileDialog.nvbyts=cx * cy * 3;
fileDialog.pvrtcBytes = new byte[fileDialog.nvbyts];
fileDialog.texture2D = new Texture2D ((int)cx,(int)cy, TextureFormat.RGB24, false);
onText("file dialog size:"+cx+":"+cy);
return;
}
fileDialog.texture2D.LoadRawTextureData (fileDialog.pvrtcBytes);
fileDialog.texture2D.Apply ();
Rect rc=fileDialog.windowDialog;
rc.x=2;
rc.y=20;
rc.width=320; //不能缩放
rc.height=400;
GUI.DrawTexture (rc, fileDialog.texture2D, ScaleMode.StretchToFill, true, 10.0f);
}
3、响应鼠标操作:当鼠标点击时获取点击的文件名称,移动时高亮显示鼠标下的文件名称
bool bMouseDown = Input.GetMouseButtonDown (0);
bool bMouseMove = Input.GetMouseButton (0);
bool bMouseUp = Input.GetMouseButtonUp (0);
float x=Input.mousePosition.x;
float y=Screen.height-Input.mousePosition.y;
if(bMouseDown)
{
filex=x;
filey=y;
nPath=NCMouseEvent(1,(Int32)x,(Int32)y,sPath);
}
else if(bMouseUp)
{
nPath=NCMouseEvent(3,(Int32)x,(Int32)y,sPath);
}
else
{
if(filex!=x||filey!=y)
{
filex=x;
filey=y;
if(bMouseMove)
NCMouseEvent(2,(Int32)x,(Int32)y,sPath);
else
NCMouseEvent(4,(Int32)x,(Int32)y,sPath);
}
}
}
if(nPath>0)
{
filePath= System.Text.Encoding.Unicode.GetString(sPath,0,nPath);
var pos=filePath.LastIndexOf("\\");
if(pos==filePath.Length-1) //目录
{
fileInput="";
}
else{
fileInput=filePath.Substring(pos+1);
filePath=filePath.Substring(0,pos+1);
}
}
}
该组件还可以用于播放视频和,
视频聊天
,直接下载源代码看吧,打开如下地址,右边下载unity3d二次开发源码,这里不知道怎么上传文件。
http://www.enen6.com/GameV.htm
相关文章推荐
- Unity中的Mathf类
- 【Unity3d】Unity3d5.1 + UGUI打IPA包出现KeyNotFoundException异常
- 记一次基于Unity的Profiler性能分析
- 反编译unity3D游戏资源,源码
- Unity 5 中的全局光照技术详解
- Unity利用AnimationCurve做物体的各种运动
- Unity如何在Android上弹出通知消息
- Unity使用Face++
- UNITY3D学习笔记9
- Unity3D与Android的交互 4.6打包出APK无问题,升级到5.0时出现无法打包的情况
- [Unity3D]Android发布
- UNITY3D学习笔记8
- unity, setting standard shader by script
- Unity3D 编写顶点和片元着色器( ShaderLab )
- unity, surface shader access world position and localposition
- Unity中uGUI的多分辨率处理
- Unity中的协程是什么?
- unity, 颜色随高度渐变shader
- Unity3D 导出apk 在真机调试时, 使用光贴图的模型丢失材质的BUG
- 小韵游戏开发学习笔记——第四期:认识Unity基本组件(一)