我有一个附加到游戏对象的脚本。我还有一个按钮。按下按钮后,文件资源管理器将打开,并允许从PC选择自定义图像,并在导入游戏对象更改的原始纹理后。但是当我退出并再次运行时,自定义纹理将替换为原始纹理。我想保存自定义纹理而不是原始tex,然后可以选择删除自定义纹理并返回到原始tex。请帮我解决这个问题。对不起,我的英语不好。这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEditor;
using System.IO;
public class ChangeTex : MonoBehaviour
{
string path;
public MeshRenderer mRenderer;
public void OpenExplorer()
{
path = EditorUtility.OpenFilePanel("Overwrite with png", "", "png");
GetImage();
}
void GetImage()
{
if (path != null)
{
UpdateImage();
}
}
void UpdateImage()
{
byte[] imgByte = File.ReadAllBytes(path);
Texture2D texture = new Texture2D (2, 2);
texture.LoadImage(imgByte);
mRenderer.material.mainTexture = texture;
}
}
简单的方法是在 PlayerPrefs 中存储图像的路径。这是一项独立于平台的功能,允许您在设备存储中放置和获取一些播放器设置。将其存储在设备存储中允许您在重新启动应用程序后获取数据。
要将设置保存到存储 您必须放置并保存:
PlayerPrefs.SetString(IMAGE_PATH_KEY, path);
获取设置:
if (PlayerPrefs.HasKey(IMAGE_PATH_KEY))
{
path = PlayerPrefs.GetString(IMAGE_PATH_KEY);
}
然后,您可以先在Start()
或Awake()
中检查 PlayerPrefs 中的路径,而不是调用OpenExplorer()