gpt4 book ai didi

c# - Unity - 奇怪的错误,构建与构建和运行

转载 作者:行者123 更新时间:2023-12-05 06:07:00 28 4
gpt4 key购买 nike

我正在做一个统一项目,我在 sphere game object 上应用 texture 。我从 .jpg 文件 中获取纹理。指定 .jpg 文件 不放在 ResourcesAssets 文件夹中,而是放在项目内的文件夹中,其中 .项目的 exe 也将在构建之后。所以 .jpg 的路径是 /project-name/Build/texture.jpg 。为了访问 .jpg,我使用了 UnityWebRequestTexture 类,该类经过修改以访问磁盘上的文件,还使用相对路径,如您在我的网站上所见代码。

// For accessing the .jpg and using it as file we use the UnityWebRequestTexture.GetTexture (see uinty docs)
// The path is a URL , but we modify it to work for local computer with relative path


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class LoadTexture : MonoBehaviour
{

Texture2D texture;
Texture2D texture2;

public GameObject sph;

bool on = false;

public Renderer sphRenderer;

void Start()
{

sphRenderer = sph.GetComponent<Renderer>();

StartCoroutine(GetText());

IEnumerator GetText()
{
using (UnityWebRequest uwr = UnityWebRequestTexture.GetTexture("file://" + "/../Build/texture-sphere.jpg")) // Relative path
{
yield return uwr.SendWebRequest();

if (uwr.isNetworkError || uwr.isHttpError)
{
// Display error
Debug.Log(uwr.error);
}
else
{
// Get downloaded asset bundle
texture = DownloadHandlerTexture.GetContent(uwr);


}
}
}
}


void Update()
{

// Implemenation of toggle by pressing T key


// Press T
if (Input.GetKeyDown(KeyCode.T))
on = !on;


if (on)
{

// Change to white color first
sphRenderer.material.color = Color.white;


//Resources.Load("texture", typeof(Texture2D));
// Set the Texture to the SPH Renderer
sphRenderer.material.mainTexture = texture as Texture2D;

}

else if (!on)
{
//set texture to null
sphRenderer.material.mainTexture = null;

// change color to red
sphRenderer.material.color = Color.red;

}

}

}

本质上,我正在做的是在红色和应用于它的纹理之间切换shpere的外观, 按 T 键 。我遇到了一个非常奇怪的错误:

如果我构建并运行我的项目,切换时会根据需要应用纹理,但如果我点击.exe文件( 来自同一构建)并再次运行它,它不会,只是保持白色(原因,正如您在我的代码中看到的,我首先将球体设为白色,然后应用纹理)。我还通过更改位置等尝试了所有可能的构建和运行构建 组合,但问题仍然存在。此外,当我点击 play 时,在 unity editorGame window 中它按预期运行。仅当单击 .exe 时才是问题。

我想,对于 Build and Run ,unity 仍然使用编辑器的 Assets ?也许问题在于 dllResources 文件夹?

我也发布了我上面所说的状态的图像。

构建并运行: enter image description here

当我点击 .exe 时: enter image description here

顺便说一下,颜色应用程序不同,导致 Random.Range 代码运行。

最佳答案

这就是 StreamingAssets 文件夹的用途。将您的运行时加载图形放在那里并使用 Application.streamingAssetsPath 变量访问它们。

参见 the manual了解更多信息。

关于c# - Unity - 奇怪的错误,构建与构建和运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65619117/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com