【问题标题】:Unity 3d Change Texture after BuildUnity 3d 构建后更改纹理
【发布时间】:2020-09-27 20:28:16
【问题描述】:

我有一个附加到游戏对象的脚本。我也有一个按钮。按下按钮时,文件资源管理器打开并允许从 PC 中选择自定义图像,并在导入 Gameobject 更改的原始纹理后。但是当我退出并再次运行时,自定义纹理将替换为原始纹理。我想保存自定义纹理而不是原始 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;

    }

}

【问题讨论】:

    标签: android unity3d 3d textures texture2d


    【解决方案1】:

    简单的方法是将图像的路径存储在PlayerPrefs 中。这是一个独立于平台的功能,允许您在设备存储中放置和获取一些播放器设置。将其存储在设备存储中,您可以在重新启动应用程序后获取数据。

    要将您的设置保存到存储中,您必须将其放入并保存:

    PlayerPrefs.SetString(IMAGE_PATH_KEY, path);
    

    获取设置:

    if (PlayerPrefs.HasKey(IMAGE_PATH_KEY))
    {
        path = PlayerPrefs.GetString(IMAGE_PATH_KEY);
    }
    

    然后,您可以先在 Start() 或 Awake() 的 PlayerPrefs 中检查您的路径,而不是调用 OpenExplorer()

    【讨论】:

    • 不走运。请向我推荐任何这样的 android 代码,因为它不是在具有保存功能的 android 平台上构建的。
    • 对不起,我的错!你不需要调用空的 Save()。所以你要做的就是打电话给SetString(KEY, VALUE)。我刚刚编辑了我的答案
    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2016-02-05
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多