当前位置: 首页 > 面试题库 >

Application.streamingAssetsPath和WebGL构建

廖弘伟
2023-03-14
问题内容

在一个项目中,我正在StreamingAssets目录中有两个json文件。处理它们的脚本在独立PC版本中可完美运行,但在WebGL中完全不起作用。

我收到“找不到文件!” 根据脚本消息:

    else if (!File.Exists (filePath))
    {
        Debug.LogError ("Cannot find file!"); 
    }

我得到了使用Unity站点上的脚本API所描述的WWW类的答案,地址为:https : //docs.unity3d.com/ScriptReference/Application-
streamingAssetsPath.html

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");
    public string result = "";
    IEnumerator Example() {
        if (filePath.Contains("://")) {
            WWW www = new WWW(filePath);
            yield return www;
            result = www.text;
        } else
            result = System.IO.File.ReadAllText(filePath);
    }
}

我很乐意这样做,但是我在编码方面太新了,我需要一些解释。我现在有的第一个问题是:该行中的 “我的文件” 字符串是什么?

    public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "MyFile");

我应该在那里写什么?是网址吗?如果是网址,该网址是什么?

如果有人可以握住我的手并引导我了解这一点,我将非常感激!谢谢!

(这是我在这里的第一个问题;我希望我没有犯错,因为我还不知道这个地方的工作方式。)


问题答案:

我现在有的第一个问题是:该行中的“我的文件”字符串是什么?

那应该是文件名,尽管它缺少扩展名。您应该添加。例如 .txt.jpgpng ....

我应该在那里写什么?是网址吗?如果是网址,该网址是什么?

您只应该在扩展名 “ MyFile” 所在的位置写文件名。

示例使用:

在您的项目中,创建一个名为“ StreamingAssets ” 的文件夹。

假设您有一个名为 “ Anne.txt” 的文件,并且该文件位于 “ StreamingAssets”中 。文件夹,这应该是您的路径:

public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "Anne.txt");

现在,假设将“ Anne.txt ”文件夹放置在名为“ Data ”的文件夹中,然后将其放置在“ StreamingAssets
”文件夹中,它的外观应为:“ StreamingAssets / Data / Anne.txt ”。

您的路径应为:

public string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "Data");
filePath = System.IO.Path.Combine(filePath , "Anne.txt");

而已。这里没什么复杂的。然后,将该路径字符串与一起使用WWW

你也 if (filePath.Contains("://"))应该是if (filePath.Contains ("://") || filePath.Contains (":///"))

编辑

如果您要加载多个文件,则我将该函数简化为该函数,以便它将文件名作为参数。

IEnumerator loadStreamingAsset(string fileName)
{
    string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, fileName);

    string result;
    if (filePath.Contains("://") || filePath.Contains(":///"))
    {
        WWW www = new WWW(filePath);
        yield return www;
        result = www.text;
    }
    else
        result = System.IO.File.ReadAllText(filePath);
}

现在,假设您在“ StreamingAssets ”文件夹中放置了3个名为“ Anne.txt ”,“ AnotherAnne.txt ”和“
OtherAnne.txt ”的文件,可以使用以下代码加载它们: __

StartCoroutine(loadStreamingAsset("Anne.txt"));

StartCoroutine(loadStreamingAsset("AnotherAnne.txt"));

StartCoroutine(loadStreamingAsset("OtherAnne.txt"));


 类似资料:
  • 我试图在WebGL中构建我的unity项目,但它总是给我一个错误。构建结果显示它成功了,但在文件夹中什么都没有。 这是我得到的错误。 FileNotFoundException:找不到文件“C:\Users\TIGER\Desktop\UnityTest\Prototype3\Temp\stagingara\Data\Native\build.bc”系统。伊奥。文件流。。ctor(System.S

  • WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件

  • 当你开始思考你应该如何学习WebGL和Three.js的时候,相信你至少对相关的关键词了解过了,希望通过WebGL或Three.js实现你想要的Web3D功能,也许你也会去思考通过WebGL或Three.js能不能实现你想要的功能,也许你是因为领导临时分配任务,还不太清楚WebGL和Three.js是什么,个人建议是不要做过多思考,先看看相关的具体技术教程,随着时间的推移你自然会明白Canvas、

  • 一句话来描述,WebGL API指的就是gl=canvas.getContext('webgl')返回对象gl的一系列绘制渲染方法,通过WebGL API可以把一个三维场景绘制渲染出来。比如上面代码中gl.createShader()、gl.shaderSource()、gl.drawArrays()等方法就是WebGl API。 WebGL API多数与GPU硬件相关,控制相关图形处理单元,比如

  • WebGL 是针对Canvas 的3D 上下文。与其他Web 技术不同,WebGL 并不是W3C 制定的标准,而是由Khronos Group 制定的。其官方网站是这样介绍的:“Khronos Group 是一个非盈利的由会员资助的协会,专注于为并行计算以及各种平台和设备上的图形及动态媒体制定无版税的开放标准。” KhronosGroup 也设计了其他图形处理API,比如OpenGL ES 2.0

  • WebGL Fundamentals This is a series of lessons or tutorials about WebGL. Unlike most WebGL lessons these are not based off of OpenGL.OpenGL is 20 years old. The lessons of OpenGL don't match well with