首页
学习
活动
专区
圈层
工具
发布

Unity 热更新技术 | (二) AssetBundle - 完整系列教程学习

在加载流程中也提到了依赖关系,下面就来讲一下AssetBundle的依赖关系,所谓依赖关系就是指某个AB包中的某个资源可能是依赖于另外一个AB包的。...比如我们打包的时候,一个AB包中的内容全是模型,而另外一个AB包中的资源都是材质,此时模型AB包中就可能需要使用到材质AB包中的资源,此时两个AB包就存在依赖关系。...可以看到这个材质也被自动打包进了AB包中,而且Budle名是默认设置的auto。 在包中的一个资源如果使用了另外一个资源,那么打包的时候会把另外一个资源也默认打包进该包中。...原因就是因为该AB包module中的Player对象使用到了materials包中的材质球资源,但是我们没有加载materials包。所以出现了材质丢失。...) c,所有的场景所共享的部分一个包(包括贴图和模型) 按照类型分组 所有声音资源打成一个包,所有shader打成一个包,所有模型打成一个包,所有材质打成一个包 按照使用类型分组 把在某一时间内使用的所有资源打成一个包

4.1K33

【Unity3D】材质 Material ( 材质简介 | 创建材质 | 设置材质属性 | 对 3D 物体应用材质 | 资源拖动到 Inspector 检查器中的 Material 属性中 )

文章目录 一、材质 Material 简介 二、创建材质 三、设置材质属性 四、对 3D 物体应用材质 五、资源拖动到 Inspector 检查器中的 Material 属性中 一、材质 Material...| 半透明 | 完全不透明 ; 凹凸 : 物体表面 是否有 凹陷 | 凸起 ; 二、创建材质 ---- 在 Unity 中 , 材质 是一种资源 , 在 Project 工程文件窗口 中的 Assets..., 鼠标左键 按住材质文件 , 直接拖到 Scene 场景窗口 中的 游戏物体 GameObject 上 , 就可以直接应用该材质 ; 五、资源拖动到 Inspector 检查器中的 Material...属性中 ---- 选中添加材质的 物体 , 在 Inspector 检查器窗口 中可以查看该物体的属性 , 其中 Mesh Filter 组件中显示的是 当前物体 的 网格数据 ; Mesh Render...组件 用于设置 物体 渲染相关属性 , 其中的 Material 中设置的就是当前物体使用的材质 ; 此处可以将 Project 文件窗口 中的 材质 资源 , 拖动到 Inspector 检查器

5.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Unity3D学习笔记8——GPU实例化(3)

    自动实例化 一个有意思的地方在于,Unity提供的标准材质支持自动实例化,而不用像《Unity3D学习笔记6——GPU实例化(1)》《Unity3D学习笔记6——GPU实例化(2)》那样额外编写脚本和Shader...传入的Mesh使用Unity自带的胶囊体,Material使用Unity的标准材质。...Unity实现了自动实例化,绘制的批次明显减少,并且性能会有所提升: 可以看到确实是自动进行实例化绘制了,但是这种方式却似乎存在实例化个数的上限,所有的实例化数据还是分成了好几个批次进行绘制。...,在着色器中,通过内置宏UNITY_ACCESS_INSTANCED_PROP来获取这个属性值。...这个实例化属性也就是脚本代码中MaterialPropertyBlock传入的颜色值。

    1.6K10

    Unity的一些基础总结

    这几天重新拾起了自己草草学习的unity技术(不到一周),开始了大胆的模仿原神之路。下面做一些总结。 1....添加天空材质     首先作为一个世界肯定要有一个天空的材质啦,从unity社区找了一个带地形和天空材质的包。如下设置天空背景环境。地形则是直接从资源包中导入了demo地形(种了很多多树的草原)。...5. 3d物品展示在ui层 有时候我们需要把一个在世界的3d物品展示在ui上,那么可以采用如下方法: i 先将该物品的layer设置成thing(或者其它的,该layer标识的所有东西都会被第二相机捕捉到...iv 将该rendertexture同样拖到rawimage的材质中,这样相机拍到的thinglayer图片会渲染到rendertexture上,再由rawimage展示出来 v 当然这样只是理论上的成功...状态机的速度可以通过点击对应绑定对象的animator的状态进行设置。 动画可能会产生一些事件,使用 animator.fireEvents = false; 可以取消所有的动画返回事件。

    1.6K20

    项目优化之优化技巧进阶(Unity3D)

    渲染队列小于等于2500时,unity认为其是不透明的,对于不同材质但z值相同对象,unity不对其进行排序,这样能保证相同材质的多个对象能是一个批次,不同材质的对象如果进入两个相同材质的对象之间,不会打破批次...(playerTag); } 不只是GameObject.CompareTag,unity中许多其他的函数也可以避免内存垃圾的生成。...这意味着,只要我们调整了参数,就会影响到所有使用这个材质的对象。那么想要微小的调整怎么办呢?...这里的几何体就是指组成场景中对象的网格结构。 3D游戏制作都由模型制作开始。...这个网格是Unity合并了所有标识为“Static”的物体的结果,在我们的例子里,就是四个物体: 你可以要问了,这四个对象明明不是都使用了一个材质,为什么可以合并成一个呢?

    2.5K20

    Unity3D学习笔记2——绘制一个带纹理的面

    概述 上一篇文章《Unity3D学习笔记1——绘制一个三角形》中介绍了Unity3D的HelloWorld——绘制一个简单的三角形。不过这个三角形太简单了,连材质都没有。...材质(Material) 接下来我们在Unity3D编辑器中创建一个材质,并且在C#脚本中将这个材质给到我们创建的面上。 2.2.1....创建材质 材质和纹理(图片)在Unity3D中被认为是一种资源,要加载他们需要特定的办法。一种比较简单的办法是使用Resources.Load。...Unity3D新建的材质默认为标准,是一种PBR材质,由多种贴图混合而成。我们这里暂时只设置Albedo贴图,也就是基本颜色贴图。...使用材质 在编辑器中把材质创建好之后,在脚本中就可以直接使用创建好的材质了: MeshRenderer meshRenderer = newGameObject.AddComponent<MeshRenderer

    1.4K40

    Unity3D学习笔记(一)

    2、下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构) 资源:一般包括脚本,声音,图像,预设,场景,材质等,在这些文件夹下可以继续划分; 游戏对象:一般包括玩家...Every GameObject has a Transform. 翻译: 转换组件决定了游戏场景中每个游戏对象的位置,旋转度和大小。每个游戏对象都有转换组件。...答:table对象的属性:activeInHierarchy(表示GameObject是否在场景中处于active状态)、activeSelf(GameObject的本地活动状态)、isStatic(仅编辑器...预设使得修改的复杂度降低,一旦需要修改所有相同属性的对象,只需要修改预设即可,所有通过预设实例化的对象都会做出相应变化。...修改预设会使通过预设实例化的所有对象都做出相应变化,而对象克隆本体和克隆出的对象是不相影响的。

    1.1K20

    AssetBundle详解

    资源卸载 资源卸载部分的变化不大,使用的仍然是Unload方法。 该方法会卸载运行时内存中包含在bundle中的所有资源。...在加载过程中,unity会将AssetBundle中的数据流转变成unity可识别的信息类型,如:材质、纹理等。加载完成之后,我们就可以对其进行更多操作了,如:对象的实例化、材质复用、纹理替换等等。...想想看下面的例子, Bundle1 中的一个材质(Material)引用了 Bundle2 中的一个纹理(Texture): 在这个例子中,在从 Bundle1 中加载材质前,你需要先将 Bundle2...GameObject>(assetName); 加载所有资源: Unity.Object[] objectArray = loadedAssetBundle.LoadAllAssets(); 现在,和上面展示的方法...如果应用必须使用 AssetBundle.Unload(false) 方法,对象将只能在以下两种情况下被卸载: 消除对象的所有引用,包括场景中的和代码中的。

    2.5K10

    AR涂涂乐⭐六、 UGUI精灵格式、自动延迟截图、优化“4”、移出扫描框终止截图进程

    UI屏幕自适度(长&宽)的缩放组件 private float X_Sc; //申请浮点型变量储存实际的缩放比例(实际的/Unity使用的) private Vector2 TopLeft_UI...(); //获取屏幕自适度,GameObject指GameObject.Find("Canvas")这个物体,gameObject指GameObject这个物体。...因为在unity中,UI Scale Mode选的是Scale with Screen Scale,根据屏幕比例自动缩放,并且下方的 //Screen Match Mode——Match...().material = Green_Mate; //当面片完全处于扫描框中时执行代码赋予材质 StartCoroutine("SuccessUI...自动生成的UI,所以不需要我们改动,但我们自己添加的需要改成上述格式 3、我们在代码中确定了识别框UI的大小,所以一定不能在Unity中随意拖动识别框改变它的大小,否则计算不成功。

    30310

    Unity3D游戏开发初探—3.初步了解U3D物理引擎

    物理引擎通过为刚性物体(游戏中的具体游戏对象-GameObject)赋予真实的物理属性的方式来模仿真实世界中的物体碰撞、跌落等反应。...在资源管理器中的Assets上单击鼠标右键,选择Import Package-Physic Material(也就是导入一个物料材质的包),在弹出的选择框中选中第一项Bouncy。 ?   ...(4)在Assets中找到刚刚导入的Bouncy包,选中Bouncy并拖动到Hierarchy中的Sphere对象上,这样就为Sphere增加了一个弹力的物理材质。...答案是肯定的,Unity3D早就为我们提供了这样的方法,让我们可以“指哪打哪”!...这里就涉及到一个如何将鼠标所指示的屏幕坐标转换为世界坐标(3D游戏中所能识别的正确坐标—NGUI坐标)的问题,在Unity中可以使用Camera.main.ScreenToWorldPoint(new

    2K50

    unity3d的入门教程_3D网课

    ---- 新建场景 场景:指戏剧、电影中的场面,泛指情景。...贴图:Texture,就是“普通的图片”,用于材质球的显示。 ---- 管理材质球与贴图 在 Assets 中建立“Materials”文件夹,用于管理材质球。...二、创建与使用材质球 创建材质球 在 Assets 中的 Materials 文件夹上,右键弹出菜单->Create->Material,完成材质球的创建。 材质球文件的后缀是“.mat”。...---- 预制体的好处 编辑其中的一个,“Apply”一下,所有的全部改变 第六课:基本组件之摄像机 一、场景美化 给场景添加地板 ①新建“plane”物体作为地板; ②创建地板使用的材质球;...通过 Tag 标签查找 N 个物体 GameObject.FindGameObjectsWithTag(string):[静态方法] 通过特定的标签,查找到所有“贴有”该标签的游戏物体,返回一个数组

    5.2K40

    AssetBundle 详解

    所有声音资源打成一个包,所有 shader 打成一个包,所有模型打成一个包,所有材质打成一个包 按照使用分组 将需要同时加载和使用的资源捆绑在一起 可以按照关卡分,一个关卡所需要的所有资源包括角色、贴图...参考以下示例,a 中的材质引用了 b 中的纹理,加载 a 和 b 的顺序无关紧要,重要的是在使用 a 中的材质前应加载 b。 在此示例中,在从 a 加载材质之前,需要将 b 加载到内存中。...加载 a 和 b 的顺序无关紧要,重要的是在使用 a 中的材质前应加载 b。...GameObject>(assetName); // 加载所有资源 Unity.Object[] objectArray = loadedAssetBundle.LoadAllAssets(); 异步加载方式...采用此种方式卸载,从该 AssetBundle 加载的纹理(并且仍然属于它)会从场景中的游戏对象消失,因此 Unity 将它们视为缺少纹理。

    3K50

    Unity3D学习笔记5——创建子Mesh

    概述 在文章Unity3D学习笔记4——创建Mesh高级接口通过高级API的方式创建了一个Mesh,里面还提到了一个SubMesh的概念。...Mesh是对于三维物体对象的封装概念,一个很容易的需求是,有的地方我希望用到材质A,有的地方我希望用到材质B,我不想把这个Mesh进行拆分,那么很简单,就在这个Mesh中划分两个子Mesh就可以了。...另外,GameObject上挂接的材质个数也要对应: MeshRenderer meshRenderer = gameObject.GetComponent(); if (meshRenderer...数量没对应上Unity编辑器会报错。 通过划分SubMesh的方式来描述一个Mesh通常是用于存在多个材质的情况,如果使用的都是同一个材质,就最好不要作SubMesh划分。...原因在于图像引擎通常是一个状态机,一个材质需要对应一个渲染指令,这就是为什么我们往往要尽可能复用材质,减少不同材质的个数。 3. 参考 Unity3D学习笔记4——创建Mesh高级接口

    89910

    通过C#脚本实现旋转的立方体

    一、介绍 目的:通过一个简单的例子(鼠标点击,使立方体旋转和变色)熟悉Unity中C#脚本的编写。 软件环境:Unity 2017.3.0f3 、 VS2013。...二、C#脚本实现 1,启动Unity,创建游戏场景。【关于Unity基本操作请点击 Unity入门教程(上)进行了解】 ? 2,在Assets目录下创建文件夹,用于存放游戏的各种资源。...的值变为true;当鼠标光标离开后,物体材质色彩还原,bCube1为false;当按下鼠标左键,且bCube1的值为true,bCube2的值为真。...注:OnMouse函数都是执行一次的函数,因此不能将与动画有关的控制函数放于其内执行,所以通常会用布尔值开关来控制Update函数中的动画函数。...9,添加控制Text显示的脚本 使用UGUI组件必须在C#脚本中添加UI的命名空间,这样我们才能引用。当bCube2的值为真时,Text组件显示“Cube正在旋转中...”

    2K60

    简简单单修改游戏对象的材质颜色,一起来看看(Unity3D)

    将自己学到的东西记录下来,这样会让学习更加有效。 二、修改游戏对象的材质颜色 2.1 支持修改的材质 首先,你的材质要支持颜色渲染通道,如果都没有颜色通道,再怎么改变都没有用的。...,会导致所有使用这个材质球的物体都改变颜色,而且是永久性修改,在程序结束也不会修改回来。...void Start() { m_Cube.GetComponent().material.color = Color.red; } } 因为Unity...在我们使用GetComponent().material.color的时候做了一些事情: 没错,这是一个实例化的材质球,保存在内存中,程序结束,这个材质球也会被销毁了,就不会改变资源中材质球的颜色了,...也不会影响其他使用这个材质球的物体了。

    3.2K10

    通过C#脚本实现旋转的立方体

    一、介绍 目的:通过一个简单的例子(鼠标点击,使立方体旋转和变色)熟悉Unity中C#脚本的编写。 软件环境:Unity 2017.3.0f3 、 VS2013。...二、C#脚本实现 1,启动Unity,创建游戏场景。【关于Unity基本操作请点击 Unity入门教程(上)进行了解】 ? 2,在Assets目录下创建文件夹,用于存放游戏的各种资源。...的值变为true;当鼠标光标离开后,物体材质色彩还原,bCube1为false;当按下鼠标左键,且bCube1的值为true,bCube2的值为真。...注:OnMouse函数都是执行一次的函数,因此不能将与动画有关的控制函数放于其内执行,所以通常会用布尔值开关来控制Update函数中的动画函数。...9,添加控制Text显示的脚本 使用UGUI组件必须在C#脚本中添加UI的命名空间,这样我们才能引用。当bCube2的值为真时,Text组件显示“Cube正在旋转中...”

    1.5K30

    【Unity游戏开发】AssetBundle杂记--AssetBundle的二三事

    GameObject,而是一个莫名其妙的东西,可能是Unity生成的一个中间对象,也许是一个索引对象,反正不是我要的东西,打包的GameObject怎么会变成这个玩意呢?...在这里我们可以看到,有一个叫RoomHallView和RoomMainView的GameObject,并且,LoadAll之后的资源比我打包的资源要多很多,看样子所有关联到的资源都被自动打包进去了,数组的...仔细查看可以发现,RoomHallView的GameObject是排在数组中所有名为RoomHallView对象的最前面,而RoomMainView则是ReferenceData排在前面,当我们Load...,一个正方体Prefab,还有两个正方体组成的Prefab,材质使用了纹理,而两组正方体都使用了这个材质,上面的代码用Push开启了依赖,打包纹理,然后打包材质(材质自动依赖了纹理),然后嵌套了一个Push...版本管理也可以交由脚本对象来实现,每次打包的资源,需要将其版本号+1,脚本对象可存储所有资源的版本号,版本号可以用于LoadFromCacheOrDownload时传入,也可以手动写入配置表,在我设计的脚本对象中

    3.8K31
    领券