Unity中各种路径

关于Unity3D在各平台上的路径问题,网上有好多的资料,如下是比较好的参考资料:

1、 http://www.manew.com/thread-23491-1-1.html

2、 http://www.xuanyusong.com/archives/2656

  这里我不详细解释和路径的用法,只把各个路径对应的位置和访问方式总结一下。

1、 Resources 路径

  Resources文件夹是Unity里自动识别的一种文件夹,可在Unity编辑器的Project窗口里创建,并将资源放置在里面。Resources文件夹下的资源不管是否有用,全部会打包进.apk或者.ipa,并且打包时会将里面的资源压缩处理。加载方法是Resources.Load<T>(文件名),需要注意:文件名不包括扩展名,打包后不能更改Resources下的资源内容,但是从Resources文件夹中加载出来的资源 可以更改。

2、Application.dataPath路径

  这个属性返回的是程序的数据文件所在文件夹的路径,例如在Editor中就是项目的Assets文件夹的路径,通过这个路径可以访问项目中任何文件夹中的资源,但是在移动端它是完全没用。

3、 Application.streamingAssetsPath 路径

  这个属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。在Unity工程的Assets目录下起一个名为“StreamingAssets”的文件夹即可,然后用 Application.streamingAssetsPath访问,这个文件夹中的资源在打包时会原封不动的打包进去,不会压缩,一般放置一些资源数据。 在PC/MAC中可实现对文件的“增删改查”等操作,但在移动端是一个只读路径。

4、 Application.persistentDataPath 路径( 推荐使用 )

  此属性返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。 这个路径可读、可写,但是只能在程序运行时才能读写操作,不能提前将数据放入这个路径。 在IOS上是应用程序的沙盒,可以被iCloud自动备份,可以通过同步推送一类的助手直接取出文件;在Android上的位置是根据Project Setting里设置的Write Access路径,可以设置是程序沙盒还是sdcard, 注意:如果在Android设置保存在沙盒中,那么就必须root以后才能用电脑取出文件,因此建议写入sdcard里。一般情况下,建议将获得的文件保存在这个路径下,例如可以从StreamingAsset中读取的二进制文件或者从AssetBundle读取的文件写入PersistentDatapath。

5、 Application.temporaryCachePath 路径

  此属性返回一个临时数据的缓存目录,跟 Application.persistentDataPath类似,但是在IOS上不能被自动备份。

6、 /sdcard/.. 路径

  表示 Android手机的SD卡根目录。

7、 /storage/emulated/0/.. 路径(这个路径我查找了好久……)

  表示Android手机的内置存储根目录。

  以上各路径中的资源加载方式都可以用WWW类加载,但要注意各个平台路径需要加的访问名称,例如Android平台的路径前要加 "jar:file://" ,其他平台使用 " file://" 。以下是各路径在各平台中的具体位置信息:

Android平台

Application.dataPath :   /data/app/xxx.xxx.xxx.apk

Application.streamingAssetsPath :   jar:file:///data/app/xxx.xxx.xxx.apk/!/assets

Application.persistentDataPath :   /data/data/xxx.xxx.xxx/files

Application.temporaryCachePath :   /data/data/xxx.xxx.xxx/cache

IOS平台

Application.dataPath :                    Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data

Application.streamingAssetsPath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw

Application.persistentDataPath :    Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents

Application.temporaryCachePath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/Caches

Windows Web Player

Application.dataPath :   file:///D:/MyGame/WebPlayer (即导包后保存的文件夹,html文件所在文件夹)

Application.streamingAssetsPath : 

Application.persistentDataPath : 

Application.temporaryCachePath :

Unity实现动态路径规划可以借助Unity自带的Navigation系统。下面是一个基本的实现过程: 1. 创建一个导航网格(NavMesh):在场景选择需要进行路径规划的区域Dijkstra算法是一种用于解决单源最短路径问题的经典算法。它的伪代码和详,然后使用Unity的导航工具生成一个导航网格。导航工具可以在Unity的菜单栏细解释如下: 伪代码: 1. 初始化: - 创建一个空的最短路径集合,用于存放的"Window -> AI -> Navigation"找到。 2. 设置导航代理(NavMesh Agent):为需要进行动已找到最短路径的节点。 - 创建一个空的距离字典,用于记录每个节点到源节点态路径规划的游戏对象添加NavMesh Agent组件。NavMesh Agent组件会负责计算和移动游的最短距离。 - 将源节点的最短距离设为0,其他节点的最短距离设为戏对象的路径。 3. 更新目标位置:根据你的需求,在游戏更新NavMesh Agent组件的无穷大。 2. 循环直到所有节点都被加入最短路径集合: - 从未加入目标位置。可以根据玩家输入、AI决策或其他条件来更新目标位置。 4. 路径计算最短路径集合的节点选择一个距离最小的节点,将其加入最短路径集合。 -和移动:当目标位置发生变化时,NavMesh Agent会自动计算新的路径,并移动游戏对象。你可以通过代码控制NavMesh Agent的移动方式,例如设置速度、旋转等。 5. 处 更新与该节点相邻的节点的最短距离: - 计算该节点到相邻节点的距离,记理路径到达事件:当NavMesh Agent到达目标位置时,你可以通过监听事件或者检查导航代为current_distance。 - 如果源节点到当前节点的距离加上current_distance小于目前记录的最短距离理的状态来处理路径到达事件。例如,你可以更新目标位置,重新计算路径,或执行其他相关操作,则更新最短距离为该值。 3. 返回最短路径字典。 详细解释: Dijkstra算法使用。 需要注意的是,动态路径规划需要频繁地计算和更新路径,因此可能会对性能产贪心策略,每次选择距离源节点最近的未加入最短路径集合的节点,逐步构生一定的影响。你可以根据实际需求进行优化,例如设置合适的路径更新频率、建最短路径集合。 首先,在初始化阶段,我们创建一个空的最短路径集合和一个空的距离字典。距离字典记录每个节点到源节点的最短距离。我们将源节点的最短距调整导航网格的精度等。 希望以上步骤对你有所帮助,可以实现在Unity进行动态路径规划。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值