Unity中prefabs的学习心得以及应用理解
时间:2019-01-23
本文章向大家介绍Unity中prefabs的学习心得以及应用理解,主要包括Unity中prefabs的学习心得以及应用理解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近这段时间一直在自学Unity,作为一个零开发经验的小白来说,除了对游戏的热爱之外,基本上没有什么能拿得出手的东西了。因为时间有限,零零散散地起了个步,每天都感觉能有所收获就很知足。那么为了防止自己健忘,就顺手写了个心得体会,对不对的大家多指正批评。
话不多说,先记录一下prefabs的用法。
Prefabs,也就是预设体,是一个游戏对象及其组件的集合,使用prefabs是为了让游戏对象以及资源能够被重复使用。在Unity的Hierarchy视图中呈蓝色的对象就是Prefabs了。要创建这样的Prefabs很简单,只需要在project视图下建立一个文件夹,然后在文件夹中创建prefabs就可以了。也可以先创建小的游戏对象,然后再拖拽到project文件夹中。
创建好的Prefabs,可以在当前工程中进行复用,也可以导出资源到其他的工程里面使用。十分方便。
根据这个特点,我对这一功能在开发游戏时的具体应用有如下的理解:
- 搭建场景需要。通过不断地研究,我终于理解了很多游戏场景看上去精美绝伦,然而在制作它们的时候却不是一气呵成的。它们往往是很多个小的物品拼凑成一个大的组合,然后几个组合再拼凑成一个场景,因此在这个过程中,那些最小单位的物品就一次次地被重复使用。而prefabs就是让我们不断地去重复使用这些对象的。如果我们把搭建场景想象成盖房子,那么prefabs无疑就是搭建房子主体的砖块,这一块块的砖当然都是复用的了。
- 方便重复利用。以割草的《三国无双》系列为例,假设用unity开发这款游戏的话,如果我们给每一个出现的“草”(就是小兵》都单独设置一个模型,恐怕这个游戏一个关卡就要爆炸。在这个关卡里面泡着成千个名字不同的模型,先不提优化组的工作量,单说关卡设计师把一个模型复制上千遍就有多闹心。更要命的是,一旦这些小兵被玩家砍完了呢?而这个时候,prefabs就派上用场了。我们可以写一个脚本,让prefabs被重复利用,根据判断自动生成新的小兵(反正都长得差不多),保证玩家可以砍到过瘾,同时也降低了开发组的工作量。
- 节省资源。小的时候玩过一款很虐心的游戏叫做《银色幻想》,这款游戏的品质还是不低的,虐心就虐心在读条上。切换场景就要loading很长时间真的是烦躁,运气不好就直接卡死(win98时代的电脑,后来用win7固态重温经典就再没出现过这样的情况)。现在回想一下,这款游戏里面似乎没有什么复用的资源(除了敌人),因此进行loading的时候会把加载场景中所有的资源都读取一遍。如果我们把同类型的场景中,主体使用prefabs的方法来进行搭建的话,那么我们可以少读取很多很多资源,这样就不至于让玩家在等待中发狂。
更多unity2018的功能介绍请到paws3d学习中心查找。链接https://www.paws3d.com/learn/,也可以加入unity学习讨论群935714213
近期更有资深开发人士直播分享unity开发经验,详情请进入官网或加入QQ群了解
- 流水线乘法器
- Hive 基础(2):库、表、字段、交互式查询的基本操作
- 玩转 Linux 之:磁盘分区、挂载知多少?
- Flume NG 简介及配置实战
- 巧用 Hive 模拟分布式 grep
- 串行乘法器
- 一例 Hive join 优化实战
- 奇数分频
- Nginx log error:client sent invalid userid cookie
- Shell 参数扩展及各类括号在 Shell 编程中的应用
- linux 系统监控、诊断工具之 IO wait
- 关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析
- Windows用户自查:微软紧急更新修复Meltdown和Spectre CPU漏洞
- rsync error: protocol incompatibility / mismatch
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在TensorFlow中使用模型剪枝将机器学习模型变得更小
- 干货 | 滴滴 数据分析原来是这样做的!
- 数据链路层之PPP协议
- matplotlib基础绘图命令之boxplot
- MapReduce之GroupingComparator分组(辅助排序、二次排序)
- MySQL优化--概述以及索引优化分析
- MySQL优化--查询分析工具以及各种锁
- MySQL优化--MVCC
- Linux入门--基础命令
- Linux入门--权限管理、任务调度、磁盘管理
- 【Rust日报】2020-08-05 -- 如何在2020年进一步加快 Rust 编译器的速度
- Linux学习--网络、进程、服务、软件管理
- IOS label 设置行高
- 重学数据结构(序:概览)
- 【Rust日报】2020-08-06 使用 Rust 编写的 Lambdas 在 AWS IoT 和 SQS 队列之间传递消息