老规矩,先介绍一下 Unity 的科普小知识:
🎬 博客主页:https://xiaoy.blog.csdn.net
🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉
🎄 学习专栏推荐:Unity系统学习专栏
🌲 游戏制作专栏推荐:游戏制作
🌲Unity实战100例专栏推荐:Unity 实战100例 教程
🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📆 未来很长,值得我们全力奔赴更美好的生活✨
------------------❤️分割线❤️-------------------------

在Unity中有很多种路径,尤其是在不同的平台上,同一种路径的写法可能最终是不一样的。
本文就来总结一下Unity中的几种路径,以及简单的使用方法。
| 路径 | 含义 | 读写权限 | 是否在包内 |
|---|---|---|---|
| Application.dataPath | Assets目录 | 只读 | 是 |
| Application.streamingAssetsPath | Assets/流资源目录 | 只读 | 是 |
| Application.persistentDataPath | 持久化目录 | 可读可写 | 否 |
| Application.temporaryCachePath | 临时缓存目录 | 只读 | 否 |
| Resources | 包内相对路径/Resources | 只读 | 是 |
根据不同的情况可以选择不同的路径使用,本文主要是总结一下各路径的含义以及在不同平台的返回值
仅供参考,收藏使用更佳~
此路径在Unity工程目录下。
特点
通过这个路径可以访问项目中任何文件夹中的资源,不过只能在PC端使用,移动端是没有访问权限的
不同平台的实际路径:
| 平台 | 路径 |
|---|---|
| Unity Editor | <项目文件夹路径>/Assets |
| Android平台 | /data/app/xxx.xxx.xxx.apk。 通常它直接指向 APK,如果正在运行拆分二进制构建,则它指向 OBB。 |
| IOS平台 | <播放器应用程序包的路径>/< AppName.app > /Data |
| Windows | <播放器应用程序包的路径>/Assets |
| Mac | <播放器应用程序包的路径>/Contents |
| WebGL | 播放器数据文件文件夹的绝对 url(没有实际数据文件名) |
StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放一些二进制文件。
在任何平台中总可以统一使用Application.streamingAssetsPath 属性来获得这一文件夹路径
特点:
PC端可读写,移动端只读不可写。
由于在Android中,StreamingAssets中的文件包含在一个.jar压缩文件中,所以移动端时只能用过UnityWebRequest类来读取,PC则可以使用IO的File读取。
不同平台的实际路径:
| 平台 | 路径 |
|---|---|
| Unity Editor | <项目文件夹路径>/StreamingAssets |
| Android平台 | jar:file:///data/app/package name-1/base.apk!/assets |
| IOS平台 | /var/containers/Bundle/Application/app sandbox/test.app/Data/Raw |
| Windows | <播放器应用程序包的路径>/Assets/StreamingAssets |
| Mac | <播放器应用程序包的路径>/Assets/StreamingAssets |
| WebGL | <播放器应用程序包的路径>/Assets/StreamingAssets |
一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。 这个路径可读、可写,一般网络下载的资源都存在这个路径。
同时在使用热更新的时候可使用的路径,推荐使用。
特点:
不同平台的实际路径:
| 平台 | 路径 |
|---|---|
| Unity Editor | %userprofile%\AppData\LocalLow<companyname><productname> |
| Android平台 | /storage/emulated/0/Android/data//files |
| IOS平台 | /var/mobile/Containers/Data/Application//Documents |
| Windows | %userprofile%\AppData\LocalLow<companyname><productname> |
| Mac | ~/Library/Application Support/unity.company name.product name |
| WebGL | /idbfs/ |
此属性返回一个临时数据的缓存目录,跟Application.persistentDataPath类似,但是在IOS上不能被自动备份。一般情况下不会使用此路径。
不同平台的实际路径:
| 平台 | 路径 |
|---|---|
| Unity Editor | %userprofile%\AppData\Local\Temp |
| Android平台 | /storage/emulated/0/Android/data//cache |
| IOS平台 | /var/mobile/Containers/Data/Application/app sandbox/Library/Caches |
| Windows | %userprofile%\AppData\Local\Temp |
| Mac | /var/xxx/xxx/xxx/T/ |
| WebGL | 未找到 |
Resources文件夹是Unity里自动识别的一种文件夹,可在Unity编辑器的Project窗口里创建,并将资源放置在里面。
是作为一个Unity的保留文件夹出现的,Resources文件夹下的资源不管是否有用,全部会打包进.apk或者.ipa,并且打包时会将里面的资源压缩处理
特点:
这是MAC平台下的几种路径,可以作为示例看一下。
代码:
void Start()
{
Debug.Log("路径总结。1.Application.dataPath:||" + Application.dataPath);
Debug.Log("路径总结。2.Application.streamingAssetsPath:||" + Application.streamingAssetsPath);
Debug.Log("路径总结。3.Application.persistentDataPath||" + Application.persistentDataPath);
Debug.Log("路径总结。4.Application.temporaryCachePath:||" + Application.temporaryCachePath);
}


我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
目录1.AdmobSDK下载地址2.将下载好的unityPackagesdk导入到unity里编辑 3.解析依赖到项目中
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b
我基本上来自Java背景并且努力理解Ruby中的模运算。(5%3)(-5%3)(5%-3)(-5%-3)Java中的上述操作产生,2个-22个-2但在Ruby中,相同的表达式会产生21个-1-2.Ruby在逻辑上有多擅长这个?模块操作在Ruby中是如何实现的?如果将同一个操作定义为一个web服务,两个服务如何匹配逻辑。 最佳答案 在Java中,模运算的结果与被除数的符号相同。在Ruby中,它与除数的符号相同。remainder()在Ruby中与被除数的符号相同。您可能还想引用modulooperation.
RSpec似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:allow(a).toreceive(:f)expect(a).toreceive(:f).with(2)a.f(1)a.f(2)a.f(3)我问的原因是a.f的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。 最佳答案 RSpecspy是测试这种情况的一种方式。要监视一个方法,用allowstub,除了方法名称之外没有任何约束,调用该方法,然后expect确切的方法调用。例如:allow(a).toreceive(:f)a.f(2)a.f(1)
我需要根据字符串路径的长度将字符串路径数组转换为符号、哈希和数组的数组给定以下数组:array=["info","services","about/company","about/history/part1","about/history/part2"]我想生成以下输出,对不同级别进行分组,根据级别的结构混合使用符号和对象。产生以下输出:[:info,:services,about:[:company,history:[:part1,:part2]]]#altsyntax[:info,:services,{:about=>[:company,{:history=>[:part1,:pa
A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(