0


Unity打开电脑本地文件夹选择图片替换

Unity打开电脑本地文件夹选择图片替换

创建工程添加对应的UI如图所示

项目简单示例

创建ChangeImage脚本来监听按钮事件

/****************************************************
    文件:ChangeImage.cs
    作者:Mark
    日期:#CreateTime#
    功能:用于替换图片
*****************************************************/usingSystem;usingSystem.Collections;usingSystem.Runtime.InteropServices;usingUnityEngine;usingUnityEngine.Networking;usingUnityEngine.UI;publicclassChangeImage:MonoBehaviour{publicImage currentImage;//当前图片publicButton selectBtn;//选择图片的按钮privatevoidStart(){
        selectBtn.onClick.AddListener(OnSelectBtnOnclick);//监听按是否被按下,按下则执行括号中的方法}//当按钮被按下时执行该脚本,打开本地文件夹privatevoidOnSelectBtnOnclick(){OpenFileName ofn =newOpenFileName();

        ofn.structSize = Marshal.SizeOf(ofn);//可进行修改选择的文件类型
        ofn.filter ="图片文件(*.jpg*.png)\0*.jpg;*.png";
        ofn.file =newstring(newchar[256]);

        ofn.maxFile = ofn.file.Length;

        ofn.fileTitle =newstring(newchar[64]);

        ofn.maxFileTitle = ofn.fileTitle.Length;string path = Application.streamingAssetsPath;
        path = path.Replace('/','\\');//默认路径
        ofn.initialDir = path;

        ofn.title ="选择需要替换的图片";

        ofn.defExt ="JPG";//显示文件的类型//注意 一下项目不一定要全选 但是0x00000008项不要缺少
        ofn.flags =0x00080000|0x00001000|0x00000800|0x00000200|0x00000008;//OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIRif(WindowDll.GetOpenFileName(ofn)){StartCoroutine(LoadTextrue(ofn.file));}}//加载选择的图片并进行替换    IEnumerator LoadTextrue(string path){UnityWebRequest unityWebRequest =newUnityWebRequest("file:///"+ path);DownloadHandlerTexture handlerTexture =newDownloadHandlerTexture(true);
        unityWebRequest.downloadHandler = handlerTexture;yieldreturn unityWebRequest.SendWebRequest();if(unityWebRequest.isNetworkError || unityWebRequest.isHttpError){print(unityWebRequest.error);}else{Texture2D t = handlerTexture.texture;//将选择的图片替换上去
            currentImage.sprite = Sprite.Create(t,newRect(0,0, t.width, t.height), Vector2.one);}}}

其中OpenFileName 的类为打开windows文件夹的类 不需要任何操作 复制即用

创建OpenFileName脚本

/****************************************************
    文件:OpenFileName.cs
    作者:Mark
    日期:#CreateTime#
    功能:打开文件夹
*****************************************************/usingSystem;usingSystem.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]publicclassOpenFileName{publicint structSize =0;publicIntPtr dlgOwner = IntPtr.Zero;publicIntPtr instance = IntPtr.Zero;publicString filter =null;publicString customFilter =null;publicint maxCustFilter =0;publicint filterIndex =0;publicString file =null;publicint maxFile =0;publicString fileTitle =null;publicint maxFileTitle =0;publicString initialDir =null;publicString title =null;publicint flags =0;publicshort fileOffset =0;publicshort fileExtension =0;publicString defExt =null;publicIntPtr custData = IntPtr.Zero;publicIntPtr hook = IntPtr.Zero;publicString templateName =null;publicIntPtr reservedPtr = IntPtr.Zero;publicint reservedInt =0;publicint flagsEx =0;}publicclassWindowDll{[DllImport("Comdlg32.dll", SetLastError =true, ThrowOnUnmappableChar =true, CharSet = CharSet.Auto)]publicstaticexternboolGetOpenFileName([In,Out]OpenFileName ofn);publicstaticboolGetOpenFileName1([In,Out]OpenFileName ofn){returnGetOpenFileName(ofn);}}

将代码挂在到窗口,点击运行

在这里插入图片描述

标签: unity ui 游戏引擎

本文转载自: https://blog.csdn.net/weixin_40486360/article/details/126816480
版权归原作者 小马学习笔记 所有, 如有侵权,请联系我们删除。

“Unity打开电脑本地文件夹选择图片替换”的评论:

还没有评论