0 votes
in 中文区(Chinese) by (140 points)

使用了sphere作为prefab存到Resources里。使用脚本Instantiate函数生成了球和连线。
作为对比,静态放置了一个cube。
运行时候的情况如图所示
enter image description here

现在的问题是,当连接pico neo3,在一体机上运行的时候就显示cube而没有球体和连线。
请问是什么问题?

使用的SDK是最新的UnityXR 2.0.3。

1 Answer

0 votes
by (7.7k points)

先不要勾选PicoXR选项,打包到安卓手机上试试,

by (140 points)

兄弟,谢谢啦。不过这个方法对我当前的问题没什么用,只是把全景变成平面而已。

by (55.5k points)

您好,
能否提供一下您的测试工程,发送到pico_devanswers@bytedance.com。
另外请将您论坛问题的标题作为您邮件的主题。

by (140 points)
edited by

谢谢,在排查中发现读取“Assets/Resources”里的prefab没问题,问题出在用以下代码读取位置为“Assets/data/edge.txt”的文本文件。

    var fileAddress = System.IO.Path.Combine(Application.streamingAssetsPath, "../data/edge.txt");

    StreamReader r = new StreamReader(fileAddress);   // 这行导致了动态生成的物体不能显示出来

    String s = r.ReadToEnd();
    edge_data = s.Split(Environment.NewLine.ToCharArray(),StringSplitOptions.None);

我的流程是从中读连线和节点的信息,按照它生成节点和连线。
在unity中运行没有问题,但在一体机上就有问题。
估计是安卓机路径问题,你有好的解决办法吗吗?

by (7.7k points)

streamingAssetsPath目录下的文件读取在android下不能直接用File的API,需要用www或者unitywebrequest类,可以查一下Unity在安卓设备中读文件的方法

by (140 points)

感谢,现在在neo3中成功运行了。www的方法很简便,以防有人遇到同样的问题不知所措,我把代码贴在这里。(首先把txt文档放到以下路径“Assets/StreamingAssets/data”)。

    string url = Application.streamingAssetsPath + "/" + "data/edge.txt";
    WWW www = new WWW(url);
    while (!www.isDone) { }
    edge_data = www.text.Split(Environment.NewLine.ToCharArray(),StringSplitOptions.None);

    foreach(String line in edge_data)
    {
        String [] data = line.Split(new char[]{','});
        // 这里就可以通过data[0]、data[1]等访问数据
    }

最后再次感谢 @kai 的回复

...