Unity-资源
东北砍王
做游戏,是种梦想!
展开
-
AssetBundle系统之(一)打包
系统所做的事情:1.打包(分析依赖,增量打包)2.加载(依赖关系加载,多版本支持)3.卸载(自动卸载无引用资源)1.先说一下打包规则为了打包方便,需要定制一套打包规则。这里的规则:a.基于文件夹的策略打包b.打包规则分为 SelfName(资源自身名字为包名)c.打包规则分为 ForderName(资源所在文件夹为包名)具体策略:如图所示:预制体放在一个文件夹,采用SelfName。精灵图片放在一个文件夹,采用SelfName。声音放在一个文件夹,采用FolderName。原创 2021-02-22 12:48:02 · 495 阅读 · 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 · 159 阅读 · 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 · 236 阅读 · 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 · 110 阅读 · 0 评论 -
资源分类之动画
游戏的本质:通过静画、文字、动画表现故事和反馈的产物出去纯文字游戏与图片类游戏,大多数的游戏都广泛使用了动画技术动画的本质:利用人的视觉残留(Persistence of Vision)当物体在快速运动时,人眼所看到的影像消失后,仍能继续保持影响约0.1~0.4秒。游戏中动画也利用相同的原理,在每帧更新时刷新图像根据不同的表现内容,有多种不同的资源组织形式在简化制作流程的同时,提供表现力更强的画面效果简化制作数据 通常使用的是:插值技术。(插值:对离散的数据进行处理,进而得到一个连续的结原创 2021-02-24 13:48:14 · 147 阅读 · 0 评论 -
资源分类之材质
物体的材料会影响人对物体的判断比如:有塑料感的物体就会给人很轻的感觉,拉丝的反光效果就会给人顺滑的感觉两种分类,从实现效果来看:1.使用PBR(Physically-Based Rendering:基于物理规律模拟的一种渲染技术)流程组织的美术资源2.没使用PBR的常规流程对于常规美术流程:底层基于兰伯特模型(Lambert),通过点乘的方式来估计照度,通过功能拆分对应的贴图,功能之间互不干扰对于PBR技术:根据能量守恒的原理来计算光照,默认的 Strandard Shader 就是基于这种原创 2021-02-24 13:47:38 · 126 阅读 · 0 评论 -
资源分类之贴图
贴图为了满足艺术效果,会使用图形数据:贴图但是贴图过多也会增大内存的负荷贴图主要分两类:1.图像贴图:美术画的,表现物体形状2.计算贴图:辅助计算,达到特殊效果常用贴图:1.固有色贴图(Diffuse)物体在白色阳光下所呈现的固有颜色使角色呈现一个合理的饱和度,也能体现模型的一部分质感2.透明贴图(Alpha)只由黑白像素构成的灰度图(纯黑全透明,纯白不透明)通常用它实现磨砂或者半透明效果只占有一个通道的灰度图,有时也将有色贴图的A通道来存储透明贴图(如果有其他贴图的闲置通道,也原创 2021-02-24 13:46:59 · 403 阅读 · 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 · 251 阅读 · 0 评论 -
资源优化:1、清理序列化冗余文件
前提:切换资源序列化模式为Force Text(一般在公司就是这个,因为git只能用text)1.清理序列化文件冗余引用材质的shader,gameobject组建的Monobehavior开发过程中,可能之前已经赋值过,但是后来又把 shader的property或者代码的序列化参数删掉了但是这些参数删除后,材质或者GameObject的Prefab文件中,该参数的序列化数据并未被删除会导致AssetDataBase.GetDependencies之类的方法,取得引用时,会带入不需要的资源a原创 2021-02-24 13:45:56 · 368 阅读 · 0 评论 -
AssetBundle加密
为啥要加密?AssetStudio随便破解。加密原理:生成AB后,将AB转为byte[],将每一位都和设定的密钥进行异或操作。完成之后将byte[]重新写入文件,即可完成加密。解密原理:读取AB时,将AB转为byte[],每一位都和设定的密钥进行异或操作。再通过AssetBundle.LoadFromMemory()方法读取。代码实现:注意:不是自己随便想一个就可以,其实很好破解的,否则也不会有《密码学》。这种加密方式叫做:共享密钥加密。(也就是加密和解密都是相同密钥)代表:原创 2021-02-22 12:49:14 · 364 阅读 · 0 评论 -
AssetBundle系统之(二)加载卸载
因为AssetBundle,必须要从指定bundle中加载资源。如果没有打包,就不能加载。那么在开发环境中,如果每次添加或者修改资源都需要重新打包,那就很麻烦,怎么解决?1.增量打包,且不同的功能拆分成不同AssetBundle,只需打修改的。而且是增量的形式,不需要那么长时间。2.使用之前生成的自定义依赖关系表,读取资源名对应的资源路径,通过编辑器下的AssetDataBase.Load方法进行加载。2 的优点:无需每次打包2 的缺点:可能表现形式不一样,比如说一个面板在editor下加载完成原创 2021-02-22 12:48:33 · 402 阅读 · 2 评论 -
AssetBundle内存管理
内存管理方向主要分为:1.硬盘文件:assetbundle文件2.内存文件:assetbundle镜像文件3.assetbundle内资源:asset4.场景内资源:instantiate-object1.对于AssetBundle硬盘文件,如何优化?修改不同的压缩方式,减少占用大小剔除冗余资源2.对于AssetBundle内存文件,如何优化?某些加载出来就一直在内存里面的资源,可以assetBundle.Load以后,直接调用assetbundle.Unload(false)原创 2021-02-22 12:47:27 · 324 阅读 · 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 · 393 阅读 · 0 评论 -
U3D资源加载
1.静态引用在脚本内创建public变量,把资源在inspector面板上进行赋值。2.ResourcesResource.LoadResource.LoadAll可以动态加载Resouces文件夹内的资源文件。如果有重复资源,优先寻找路径层次高的那个。3.AssetDatabaseAssetDatabase.LoadAsset只在编辑器范围内有效。4.AssetBundle将资源打成AssetBundle,放在服务器或者本地。从这个Bundle中Load某个资源。AssetBun原创 2021-02-22 12:46:18 · 116 阅读 · 0 评论 -
AssetBundle介绍
在网上说的:所有资源的一个容器,像Zip压缩包一样,这些资源都可以在运行时进行加载。压缩选项:Uncompressed、LZMA、LZ4自身保存着互相的依赖关系。两种类型:场景Bundle、松散的Bundle自己实践的:当导出AB后会生成两个文件。1.AssetBundle文件:是二进制的,看不懂。2.Mainfest文件:记录CRC、Hash、包含资源以及依赖的AssetBundle文件官方给的AssetBundle的文件结构:想要了解里面是什么怎么做呢?(此处拿普通的AB为原创 2021-02-22 12:45:47 · 516 阅读 · 0 评论 -
U3D资源类型
Unity中,资源有很多类型。1.脚本类资源在打包后,脚本都会变成 dll 打到游戏包中。目录为:…\assets\bin\Data\Manageda.游戏正常逻辑代码(Assets目录下)导出为:Assembly-CSharpb.游戏编辑器逻辑代码导出为:Assembly-CSharp-Editorc.在特定目录(standard assets、Pro standard assets、plugins )中代码导出为:Assembly-CSharp-firstpassd.在特定目录中编辑原创 2021-02-22 12:45:18 · 391 阅读 · 0 评论