Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使点文件夹/文件在unity中可见?_Python_Unity3d - Fatal编程技术网

Python 如何使点文件夹/文件在unity中可见?

Python 如何使点文件夹/文件在unity中可见?,python,unity3d,Python,Unity3d,我在unity中使用ironpython运行一些脚本和一些python包,在运行我得到的项目时: OSException: cannot load library C:\Users\Sai\Documents\Work\Unity\Unity-Python-Demo-master\Assets\StreamingAssets\Lib\site-packages\numpy\.libs\libopenblas.SVHFG5YE3RK3Z27NVFUDAPL2O3W6IMXW.gfortran-wi

我在unity中使用ironpython运行一些脚本和一些python包,在运行我得到的项目时:

OSException: cannot load library C:\Users\Sai\Documents\Work\Unity\Unity-Python-Demo-master\Assets\StreamingAssets\Lib\site-packages\numpy\.libs\libopenblas.SVHFG5YE3RK3Z27NVFUDAPL2O3W6IMXW.gfortran-win32.dll
问题是unity隐藏了以点“.”开头的文件夹和文件。我怎样才能解决这个问题?其中一个包需要一个位于“.lib”文件夹中的文件,但它是隐藏的,我只能在资源管理器窗口中看到该文件夹,而不能在unity项目中看到

这是我的密码:

        var engine = Python.CreateEngine();
        ICollection<string> searchPaths = engine.GetSearchPaths();
#if UNITY_STANDALONE_WIN
        searchPaths.Add(Application.dataPath);
        searchPaths.Add(Application.dataPath + @"\StreamingAssets" + @"\Lib\");
        searchPaths.Add(Application.dataPath + @"\StreamingAssets" + @"\Lib\site-packages\");
        engine.SetSearchPaths(searchPaths);
        dynamic py = engine.ExecuteFile(Application.dataPath + @"\StreamingAssets" + @"\Python\pt.py");
        test = py.CTScan("Codemaker");
var-engine=Python.CreateEngine();
ICollection searchpath=engine.getsearchpath();
#如果团结赢了
searchpath.Add(Application.dataPath);
添加(Application.dataPath++“\StreamingAssets++”\Lib\”;
添加(Application.dataPath++“\StreamingAssets++”\Lib\site packages\”;
engine.SetSearchPath(搜索路径);
动态py=engine.ExecuteFile(Application.dataPath++“\StreamingAssets++”\Python\pt.py”);
测试=py.CTScan(“代码生成器”);
如下图所示,.lib文件夹在项目中不可见:


显然没有办法

见:

隐藏资产 在导入过程中,Unity完全忽略资产文件夹(或其中的子文件夹)中的以下文件和文件夹:

  • 隐藏文件夹
  • 以“.”开头的文件和文件夹
  • 以“~”结尾的文件和文件夹
  • 名为cvs的文件和文件夹
  • 扩展名为.tmp的文件
这用于防止导入由操作系统或其他应用程序创建的特殊和临时文件

这些文件不会进入Unity导入,因此也不会进入构建


我想解决这个问题的办法应该是

  • 将其预编译为插件DLL,在内部存储和提供这些文件,并使用它们

  • 那么,请使用不同的文件夹名称

  • 找到另一种向应用程序提供不在
    资产
    文件夹中的文件的方法(例如,尝试改用,或者使用zip并在运行时解压缩)


只是一个一般性的旁注:

不要将字符串concat(
+“\”
)用于系统文件路径

而是直接使用更通用的方法,根据设备的操作系统插入正确的路径分隔符,例如

searchPaths.Add(Path.Combine(Application.streamingAssetsPath, "Lib", "site-packages"));
 

谢谢你的回答,问题是我不能准确地更改文件夹名称或其位置,我没有提供包的文件夹名称,ironpython会这样做,像那样存储这些文件,我不知道怎么做。