Unity 数据读取|(一)宏的定义和资源路径

简介: Unity 数据读取|(一)宏的定义和资源路径


1.平台宏定义

1.1 使用场合

  • 在程序中我们想要根据不同的运行环境去执行不同的代码时使用。比如我们在PC上和安卓上需要执行不同的代码,我们就可以使用Unity自带的宏定义来区分。

1.2 常用定义

定义 功能
UNITY_EDITOR 用于从游戏代码调用 Unity 编辑器脚本的脚本符号。
UNITY_EDITOR_WIN Windows 上编辑器代码的脚本符号。
UNITY_EDITOR_OSX Mac OS X 上编辑器代码的脚本符号。
UNITY_EDITOR_LINUX Linux 上编辑器代码的脚本符号。
UNITY_STANDALONE_OSX 专门用于 Mac OS X(包括 Universal、PPC 和 Intel 架构)编译或执行代码的脚本符
UNITY_STANDALONE_WIN 用于专门为 Windows 独立应用程序编译/执行代码的脚本符号。
UNITY_STANDALONE_LINUX 用于专门为 Linux 独立应用程序编译/执行代码的脚本符号。
UNITY_STANDALONE 用于为任何独立平台(Mac OS X、Windows 或 Linux)编译/执行代码的脚本符号。
UNITY_WII 用于为 Wii 控制台编译/执行代码的脚本符号。
UNITY_IOS 用于为 iOS 平台编译/执行代码的脚本符号。
UNITY_IPHONE 已弃用。请改用UNITY_IOS。
UNITY_ANDROID Android 平台的脚本符号。
UNITY_LUMIN Magic Leap OS 平台的脚本符号。您还可以使用PLATFORM_LUMIN。请注意,Lumin 平台不再受支持。
UNITY_TIZEN Tizen 平台的脚本符号。
UNITY_TVOS Apple TV 平台的脚本符号。
UNITY_WSA 脚本符号为通用Windows平台。此外,NETFX_CORE是在针对 .NET Core 编译 C# 文件并使用 .NET 时定义的脚本后端。
UNITY_WSA_10_0 通用 Windows 平台的脚本符号。此外,WINDOWS_UWP是在针对 .NET Core 编译 C# 文件时定义的。
UNITY_WEBGL 脚本符号为网页GL
UNITY_FACEBOOK Facebook 平台的脚本符号(WebGL 或 Windows 独立)。
UNITY_ANALYTICS 用于调用 Unity 的脚本符号分析。
UNITY_ASSERTIONS 用于断言控制过程的脚本符号。
UNITY_64 64 位平台的脚本符号。

1.3 代码样例

using UnityEngine;
using System.Collections;
public class PlatformDefines : MonoBehaviour {
  void Start () {
    #if UNITY_EDITOR
      Debug.Log("Unity Editor");
    #endif
    #if UNITY_IOS
      Debug.Log("iOS");
    #endif
    #if UNITY_STANDALONE_OSX
        Debug.Log("Standalone OSX");
    #endif
    #if UNITY_STANDALONE_WIN
      Debug.Log("Standalone Windows");
    #endif
  }          
}

2.资源路径

2.1 常用路径说明

  • 程序读取文件首先需要获取路径,在不同平台路径的存取权限不同,用途也不一样,有些时候相同的资源存储路径,在不同平台下访问方式也不一样。相信大家一定踩坑不少,故总结常用的资源存储路径,便于以后方便查阅。
路径属性 访问权限 路径说明 特点
Resources 只读 Unity内部路径,Resources文件夹,可以是Assets目录下的子目录或者是孙目录 会将文件夹内的资源打包集成到.asset文件里面。因此建议可以放一些Prefab,因为Prefab在打包时会自动过滤掉不需要的资源,有利于减小资源包的大小。资源读取使用Resources.Load()。
Application.dataPath 只读 此属性用于返回程序的数据文件所在文件夹的路径。例如在Editor中就是Assets了。 只能用于Windows模式或者Editor模式。
Application.streamingAssetsPath 只读 此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。放在Unity工程StreamingAssets文件夹中的资源发布后都可以通过这个路径读取出来。 (1)在打包时资源会原封不动地打包进去,不会压缩,一般放置资源数据(2)在PC/Mac中可实现对文件的“增删改查”等操作,但在移动端是一个只读路径。(3)在打包时不会被压缩,读取速度很快,但是需要加密预防别人解压破解。(4)一般在这个文件夹里面存放一些二进制文件(比如AssetBundle,mp4等一些文件)。(5)在Android端读取这个文件夹时,只能使用WWW进行异步读取,而在ios和pc上则可以使用File类及其他同步读取方式。
Application.persistendDataPath 读写 此属性用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。 (1)这个路径可读可写,但只能在程序运行的时候才能读写操作,不能提前将数据放入这个路径;(2)在IOS上是应用沙盒,可以被iCloud自动备份,可以通过同步推送一类的助手直接取出文件;(3)在Android上的位置是根据Project Setting里设置的Write Access路径,可以设置是程序沙盒还是sdcard(如果在Android设置保存在沙盒中,那么就必须root以后才能用电脑取出文件,因此建议写在sdcard里);(4)在Android端读取这个文件夹时,只能使用WWW进行异步读取,而在ios和pc上则可以使用File类及其他同步读取方式。(5)可以将需要热更的文件放在里面(将一些文件放在Application.streamingAssetsPath,在运行后再将Application.streamingAssetsPath里面的文件移动到Application.persistentDataPath下,再进行热更。也可以完全从服务器上下载后存放在Application.persistentDataPath。
Application.temporaryCachePath 只读 此属性用于返回一个临时数据的缓存目录。 IOS上不能被自动备份

2.2 常用路径说明

2.2.1 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

2.2.2 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

2.2.3 Windows

路径属性 路径
Application.dataPath /Assets
Application.streamingAssetsPath /Assets/StreamingAssets
Application.persistentDataPath C:/Users/xxxx/AppData/LocalLow/CompanyName/ProductName
Application.temporaryCachePath C:/Users/xxxx/AppData/Local/Temp/CompanyName/ProductName

2.2.4 Mac

路径属性 路径
Application.dataPath /Assets
Application.streamingAssetsPath /Assets/StreamingAssets
Application.persistentDataPath /Users/xxxx/Library/Caches/CompanyName/Product Name
Application.temporaryCachePath /var/folders/57/6b4_9w8113x2fsmzx_yhrhvh0000gn/T/CompanyName/Product Name

2.2.5 Windows Web Player

路径属性 路径
Application.dataPath / file:///D:/MyGame/WebPlayer (即导包后保存的文件夹,html文件所在文件夹)
Application.streamingAssetsPath
Application.persistentDataPath
Application.temporaryCachePath
相关文章
|
3月前
|
图形学 C++
小功能⭐️Unity快捷键、路径及常用特性
小功能⭐️Unity快捷键、路径及常用特性
|
3月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
172 6
|
2月前
|
图形学 开发者 搜索推荐
Unity Asset Store资源大解密:自制与现成素材的优劣对比分析,教你如何巧用海量资产加速游戏开发进度
【8月更文挑战第31天】游戏开发充满挑战,尤其对独立开发者或小团队而言。Unity Asset Store 提供了丰富的资源库,涵盖美术、模板、音频和脚本等,能显著加快开发进度。自制资源虽具个性化,但耗时长且需专业技能;而 Asset Store 的资源经官方审核,质量可靠,可大幅缩短开发周期,使开发者更专注于核心玩法。然而,使用第三方资源需注意版权问题,且可能需调整以适应特定需求。总体而言,合理利用 Asset Store 能显著提升开发效率和项目质量。
66 0
|
3月前
|
开发者 图形学 API
从零起步,深度揭秘:运用Unity引擎及网络编程技术,一步步搭建属于你的实时多人在线对战游戏平台——详尽指南与实战代码解析,带你轻松掌握网络化游戏开发的核心要领与最佳实践路径
【8月更文挑战第31天】构建实时多人对战平台是技术与创意的结合。本文使用成熟的Unity游戏开发引擎,从零开始指导读者搭建简单的实时对战平台。内容涵盖网络架构设计、Unity网络API应用及客户端与服务器通信。首先,创建新项目并选择适合多人游戏的模板,使用推荐的网络传输层。接着,定义基本玩法,如2D多人射击游戏,创建角色预制件并添加Rigidbody2D组件。然后,引入网络身份组件以同步对象状态。通过示例代码展示玩家控制逻辑,包括移动和发射子弹功能。最后,设置服务器端逻辑,处理客户端连接和断开。本文帮助读者掌握构建Unity多人对战平台的核心知识,为进一步开发打下基础。
116 0
|
5月前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
155 2
|
5月前
|
图形学 索引
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码)
91 2
|
5月前
|
人工智能 定位技术 图形学
【unity实战】制作敌人的AI,使用有限状态机、继承和抽象类多态 定义不同状态的敌人行为
【unity实战】制作敌人的AI,使用有限状态机、继承和抽象类多态 定义不同状态的敌人行为
133 1
|
5月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱10(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱10(附带项目源码)
48 1
|
5月前
|
存储 JSON 图形学
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
184 0
|
5月前
|
图形学
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱12(附带项目源码)
【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱12(附带项目源码)
57 0

相关实验场景

更多