Unity-资源
东北砍王
做游戏,是种梦想!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
AssetBundle系统之(一)打包
系统所做的事情: 1.打包(分析依赖,增量打包) 2.加载(依赖关系加载,多版本支持) 3.卸载(自动卸载无引用资源) 1.先说一下打包规则 为了打包方便,需要定制一套打包规则。 这里的规则: a.基于文件夹的策略打包 b.打包规则分为 SelfName(资源自身名字为包名) c.打包规则分为 ForderName(资源所在文件夹为包名) 具体策略: 如图所示: 预制体放在一个文件夹,采用SelfName。 精灵图片放在一个文件夹,采用SelfName。 声音放在一个文件夹,采用FolderName。原创 2021-02-22 12:48:02 · 616 阅读 · 0 评论 -
资源工作流之防止移动文件
通过定制文件操作的处理,能做好很多强检测或者辅助操作,防止这些问题引起的错误 效果如图所示: 代码很简单: public class FileMoveUtil : UnityEditor.AssetModificationProcessor { const string CHECK_DIR = "Assets/GameRes/"; public static AssetMoveResult OnWillMoveAsset(string oldPath, string newPath)原创 2021-02-24 13:51:04 · 245 阅读 · 0 评论 -
资源工作流之自动导出FBX动画
此工具用途: 美术给出模型,自动导出 animator 和 animation(避免一直ctrl+D出来) using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.IO; using System.Text; using UnityEditor.Animations; public class ModelAnimationEditor {原创 2021-02-24 13:50:28 · 331 阅读 · 0 评论 -
资源工作流之自动设置图片格式
此工具的作用: 1.可以帮助策划or美术导入图片自动设置为Sprite格式 2.并且设置默认的压缩方式 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class SpriteImportEditor : AssetPostprocessor { public override uint GetVersion() {原创 2021-02-24 13:50:01 · 173 阅读 · 0 评论 -
资源分类之动画
游戏的本质: 通过静画、文字、动画表现故事和反馈的产物 出去纯文字游戏与图片类游戏,大多数的游戏都广泛使用了动画技术 动画的本质: 利用人的视觉残留(Persistence of Vision) 当物体在快速运动时,人眼所看到的影像消失后,仍能继续保持影响约0.1~0.4秒。 游戏中动画也利用相同的原理,在每帧更新时刷新图像 根据不同的表现内容,有多种不同的资源组织形式 在简化制作流程的同时,提供表现力更强的画面效果 简化制作数据 通常使用的是:插值技术。 (插值:对离散的数据进行处理,进而得到一个连续的结原创 2021-02-24 13:48:14 · 247 阅读 · 0 评论 -
资源分类之材质
物体的材料会影响人对物体的判断 比如:有塑料感的物体就会给人很轻的感觉,拉丝的反光效果就会给人顺滑的感觉 两种分类,从实现效果来看: 1.使用PBR(Physically-Based Rendering:基于物理规律模拟的一种渲染技术)流程组织的美术资源 2.没使用PBR的常规流程 对于常规美术流程: 底层基于兰伯特模型(Lambert),通过点乘的方式来估计照度,通过功能拆分对应的贴图,功能之间互不干扰 对于PBR技术: 根据能量守恒的原理来计算光照,默认的 Strandard Shader 就是基于这种原创 2021-02-24 13:47:38 · 201 阅读 · 0 评论 -
资源分类之贴图
贴图 为了满足艺术效果,会使用图形数据:贴图 但是贴图过多也会增大内存的负荷 贴图主要分两类: 1.图像贴图:美术画的,表现物体形状 2.计算贴图:辅助计算,达到特殊效果 常用贴图: 1.固有色贴图(Diffuse) 物体在白色阳光下所呈现的固有颜色 使角色呈现一个合理的饱和度,也能体现模型的一部分质感 2.透明贴图(Alpha) 只由黑白像素构成的灰度图(纯黑全透明,纯白不透明) 通常用它实现磨砂或者半透明效果 只占有一个通道的灰度图,有时也将有色贴图的A通道来存储透明贴图 (如果有其他贴图的闲置通道,也原创 2021-02-24 13:46:59 · 703 阅读 · 0 评论 -
资源优化:2、降低动画文件大小
前提:切换资源序列化模式为Force Text (一般在公司就是这个,因为git只能用text) 打开*.anim文件,可以看到里面浮点数精度比较高,可以降低精度减少动画文件大小 (PS:小心美术diss你,他可能觉得动画不准了) 看一眼: 那么如何优化呢? public static void ClearAnimation() { string title = "Clear Animation"; Object[] objs = Selection.GetFil原创 2021-02-24 13:46:24 · 362 阅读 · 0 评论 -
资源优化:1、清理序列化冗余文件
前提:切换资源序列化模式为Force Text (一般在公司就是这个,因为git只能用text) 1.清理序列化文件冗余引用 材质的shader,gameobject组建的Monobehavior 开发过程中,可能之前已经赋值过,但是后来又把 shader的property或者代码的序列化参数删掉了 但是这些参数删除后,材质或者GameObject的Prefab文件中,该参数的序列化数据并未被删除 会导致AssetDataBase.GetDependencies之类的方法,取得引用时,会带入不需要的资源 a原创 2021-02-24 13:45:56 · 595 阅读 · 0 评论 -
AssetBundle加密
为啥要加密? AssetStudio随便破解。 加密原理: 生成AB后,将AB转为byte[],将每一位都和设定的密钥进行异或操作。 完成之后将byte[]重新写入文件,即可完成加密。 解密原理: 读取AB时,将AB转为byte[],每一位都和设定的密钥进行异或操作。 再通过AssetBundle.LoadFromMemory()方法读取。 代码实现: 注意: 不是自己随便想一个就可以,其实很好破解的,否则也不会有《密码学》。 这种加密方式叫做:共享密钥加密。 (也就是加密和解密都是相同密钥) 代表:原创 2021-02-22 12:49:14 · 543 阅读 · 0 评论 -
AssetBundle系统之(二)加载卸载
因为AssetBundle,必须要从指定bundle中加载资源。 如果没有打包,就不能加载。 那么在开发环境中,如果每次添加或者修改资源都需要重新打包,那就很麻烦,怎么解决? 1.增量打包,且不同的功能拆分成不同AssetBundle,只需打修改的。而且是增量的形式,不需要那么长时间。 2.使用之前生成的自定义依赖关系表,读取资源名对应的资源路径,通过编辑器下的AssetDataBase.Load方法进行加载。 2 的优点:无需每次打包 2 的缺点:可能表现形式不一样,比如说一个面板在editor下加载完成原创 2021-02-22 12:48:33 · 524 阅读 · 2 评论 -
AssetBundle内存管理
内存管理方向主要分为: 1.硬盘文件:assetbundle文件 2.内存文件:assetbundle镜像文件 3.assetbundle内资源:asset 4.场景内资源:instantiate-object 1.对于AssetBundle硬盘文件,如何优化? 修改不同的压缩方式,减少占用大小 剔除冗余资源 2.对于AssetBundle内存文件,如何优化? 某些加载出来就一直在内存里面的资源,可以assetBundle.Load以后,直接调用assetbundle.Unload(false)原创 2021-02-22 12:47:27 · 461 阅读 · 0 评论 -
AssetBundle使用
使用 AssetBundle 只需四步: 1.设置包名 2.打包 3.加载包内资源 1.设置要打包的资源 可以手动设置: 也可以在代码里面设置: AssetImporter asset = AssetImporter.GetAtPath("Assets/GameRes/Cube.prefab"); asset.SetAssetBundleNameAndVariant("cube", "a"); 2.打包 BuildPipeline.BuildAssetBundles(Application.str原创 2021-02-22 12:47:03 · 609 阅读 · 0 评论 -
U3D资源加载
1.静态引用 在脚本内创建public变量,把资源在inspector面板上进行赋值。 2.Resources Resource.Load Resource.LoadAll 可以动态加载Resouces文件夹内的资源文件。 如果有重复资源,优先寻找路径层次高的那个。 3.AssetDatabase AssetDatabase.LoadAsset 只在编辑器范围内有效。 4.AssetBundle 将资源打成AssetBundle,放在服务器或者本地。 从这个Bundle中Load某个资源。 AssetBun原创 2021-02-22 12:46:18 · 185 阅读 · 0 评论 -
AssetBundle介绍
在网上说的: 所有资源的一个容器,像Zip压缩包一样,这些资源都可以在运行时进行加载。 压缩选项:Uncompressed、LZMA、LZ4 自身保存着互相的依赖关系。 两种类型: 场景Bundle、松散的Bundle 自己实践的: 当导出AB后会生成两个文件。 1.AssetBundle文件:是二进制的,看不懂。 2.Mainfest文件:记录CRC、Hash、包含资源以及依赖的AssetBundle文件 官方给的AssetBundle的文件结构: 想要了解里面是什么怎么做呢? (此处拿普通的AB为原创 2021-02-22 12:45:47 · 753 阅读 · 0 评论 -
U3D资源类型
Unity中,资源有很多类型。 1.脚本类资源 在打包后,脚本都会变成 dll 打到游戏包中。 目录为:…\assets\bin\Data\Managed a.游戏正常逻辑代码(Assets目录下) 导出为:Assembly-CSharp b.游戏编辑器逻辑代码 导出为:Assembly-CSharp-Editor c.在特定目录(standard assets、Pro standard assets、plugins )中代码 导出为:Assembly-CSharp-firstpass d.在特定目录中编辑原创 2021-02-22 12:45:18 · 533 阅读 · 0 评论
分享