1.20 从0开始学习Unity游戏开发--章节总结

news/2024/4/19 15:24:33/文章来源:https://blog.csdn.net/z175269158/article/details/130326955

不知不觉系列文章已经来到了第二十篇,本篇我们将会给这一个大章节的内容做一个总结。

现代游戏引擎特点

我们在整个十多篇的文章中其实很多时候使用了编辑器上的功能,例如拖拽赋值等等,用场景编辑器来调整物体的位置,在Inspector上给物体添加功能组件。

这些都不是编写代码实现的,也就是说,相比于传统软件,现代商业游戏引擎其实更注重的是所见即所得的内容创作,如果什么事情都需要开发写代码的话,这个开发效率是极其低下的。

所以需要我们开发人员从传统软件的各种事情都需要改代码的思维跳脱出来,尽可能的提供编辑器上能直接编辑的能力,这样不仅是方便了团队中的其他成员,也方便的自己快速调整逻辑进行试错。

GameObject和组件

相比于传统的面向对象思想的编程,特别是相对于传统GUI框架里面全都是继承来扩展功能的搞法,现代游戏引擎越来越多的使用组件而非继承,其一大原因是游戏逻辑千变万化,很难一开始想清楚基类应该有哪些功能,子类又应该如何抽象,最后往往会导致基类膨胀,或者子类词不达意。

而Unity中,场景万物都是基于GameObject,而GameObject仅作为一个概念存在,我们实际的几乎所有功能都来自GameObject上的组件,当我们需要实现一个游戏逻辑的时候,出发点往往就是编写一个组件。

通过组件,我们可以接触到Unity给我们提供的各式各样的内置功能,例如内置的3D空间位置管理,内置的物理引擎,内置的渲染功能,都是来自各个组件。

数据的序列化

Unity引擎不仅提供了一套组件功能,也同样提供了序列化的能力,这使得我们编写的逻辑代码,添加的资源,都可以根据引用或者自行添加的形式,进入到游戏打包的内容中,而游戏运行时又可以根据引用,或者对应的加载API来加载到对应的资源。

通过直接以文本方式查看场景内容(其他资源也可以这样查看),我们可以更加清晰的了解到我们的数据都是以何种方式存储的,何种方式引用的,这对我们理解整个游戏内资源如何进行关联和加载的起到了非常重要的作用。

学会从想象转换成现实

其实讲的就是学会构思解决方案的过程,例如其中一篇我们讲解如何实现三人称视角,其实就是从想象中三人称应该如何让视线追随操控的玩家,然后根据想要的规则再去推导数学上的信息,最后在游戏中落地。也许三人称视角有很多标准的写法,但是游戏中很多其他的东西并没有标准,完全需要靠自己的想象,然后将想象落地。所以这也是为什么本大章其实并没有完整的教完一个游戏从头到尾的制作过程,教程故意的留下了大片的空白给大家自行想象并自行落地。

下一大章

下一个大章我们将会开始讲解Unity中的渲染,为什么这么快就开始专门讲渲染了呢?如果我只是来学习如何构建玩法,也还需要学习这一章节吗?

虽然说不同人使用Unity的目的不同,但是渲染作为最终呈现画面的手段,对所见即所得的观感影响是决定性的,并且由于这个地位的原因,游戏内大部分的组件和功能,其实最终都是为渲染服务,我们学习了各种组件的功能,其实是学习了它的源头,但是并没有学习这个源头最终呈现出来的效果是如何产生的,只有我们了解了渲染后,这块最后的拼图才能补齐,这对我们理解消化这些功能模块能起到非常关键的推送作用。

由于渲染的内容比较多,预计也会写比较久,所以关于玩法落地也就是GamePlay的进阶大章也会同时编写,相当于第二个大章和第三个大章其实不是一个先后顺序,而是并行的,当然由于精力有限,渲染的内容出的会更多,GamePlay的部分会视情况推进。

好了,让我们后续的章节再见吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102234.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker容器内的应用利用k8s configmap做配置中心

ConfigMap 能带来什么好处? 传统的应用服务都有自己的配置文件,各自配置文件存储在服务所在节点。如果配置出现变更,就需要对应节点的配置文件。Kubernetes 利用了 Volume 功能,完整设计了一套配置中心,其核心对象就是…

阳光万里,祝你上岸——免统考在职研究生

什么是在职研究生 在职研究生,是国家计划内,以在职人员身份,部分时间在职工作,部分时间在校学习的研究生教育的一种类型。在职攻读硕士方式有三种: 1.双证非全日制研究生:为普通高等教育研究生学历&#x…

Android OpenGL 渲染相机预览画面显示体系

OpenGL能进行高效得渲染图形图像,并支持各种复杂的特效和动画。 而在 Android 当中,运用的是OpenGL ES,它是OpenGL的一个轻量级版本,专门用于在移动设备、游戏控制台、嵌入式系统等嵌入式环境中使用。 它可以做相机滤镜或者图片…

seata1.6.0 单机,集群搭建 基于nacos注册中心 mysql数据库

seata1.6.0 单机,集群搭建 基于nacos注册中心 mysql数据库 大纲 1 单机搭建2 集群搭建 由于项目中的dubbo版本为2.6.0 故客户端程序(TM RM)使用seata-all 1.4.2 ,服务端(TC)使用seata-server-1.6.0.zip …

MIT6.S081操作系统实验2021(xv6系统)——lab1 Xv6 and Unix utilities

MIT6.S081操作系统实验2021——lab1 参考文章 sleep 要求为xv6实现UNIX 程序sleep;其应该暂停用户指定的ticks number。tick是 xv6 内核定义的时间概念,即计时器芯片的两次中断之间的时间(两次时钟中断之间的时间)。您的解决方…

关于函数栈帧的创建与销毁和可变参数列表

目录 1. 深刻理解函数调用过程1.1 基本概念1.2 函数栈帧的创建于销毁1.2.1 栈帧创建1.2.2 栈帧销毁1.2.3 有趣的现象 2. 了解可变参数列表的使用与原理2.1 可变参数列表与函数栈帧的关系2.2 宏的工作过程2.3 宏的具体实现原理 1. 深刻理解函数调用过程 1.1 基本概念 关于函数…

【MySQL】(7)复合查询

文章目录 单表查询回顾与练习多表查询自连接多行子查询(单列)in 运算符all 关键字any 关键字 多列子查询from 子句中的子查询合并查询 单表查询回顾与练习 注:下面的依旧基于 scott 数据库 MariaDB [scott]> select * from emp; -------…

ASEMI代理ADG736BRMZ-REEL7原装ADI车规级ADG736BRMZ-REEL7

编辑:ll ASEMI代理ADG736BRMZ-REEL7原装ADI车规级ADG736BRMZ-REEL7 型号:ADG736BRMZ-REEL7 品牌:ADI /亚德诺 封装:MSOP-10 批号:2023 安装类型:表面贴装型 引脚数量:10 类型&#xff1…

Mybatis框架超详解及运用总结

Mybatis 一、什么是Mybatils?二、第一个Mybatils程序2.1、创建springboot工程2.2、准备数据2.3、配置MyBatis2.4、编写SQL语句2.5、单元测试 三、JDBC四、数据库连接池五、lombok六、Mybatis基础操作6.1、删除6.2、新增6.2.1、主键返回 6.3、修改6.4、查询6.4.1、数…

推式配货(Push)、拉式配货(Pull)和配送需求计划(DRP)的区别

随着电子商务的迅猛发展,物流配送服务已然成为企业竞争最为核心的环节,一个全面、完善的物流配送方案,能够帮助企业满足客户交期、节约运输和库存成本,促进各环节沟通,提高生产稳定性。同时,物流配送的许多…

垃圾回收概述

什么是垃圾 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 关于垃圾收集有三个经典问题: 哪些内存需要回收?什么时候回收?如何回收? 垃圾收…

9.7 字符串的指针和指向字符串的指针变量

9.7 字符串的指针和指向字符串的指针变量 一.字符串表示形式二.字符串指针做函数参数1.数组名做函数参数2.数组指针做函数参数 三.字符指针变量与字符数组(1)字符数组是由若干个元素组成,每个元素中存放一个字符。(2)赋…

[HBZ分享] 小米手机如何解BL锁

第一步: 进入【设置—>我的设备–>全部参数–>连续疯狂的点MIUI版本那一行】 第二步:进入【更多设置–>开发者模式】,打开USB调试 与 USB安装 第三步:进入【更多设置–>开发者模式】,进入【设别解锁状…

人工神经网络

1. 单个神经元 🍑 神经网络 即 模型 🍤 输入 四个参数 --> 结果 🍑 模型训练(学习) 例子 🍑 模型的输入x 乘 权值ω 减去阈值θ --> 激活函数 f 🍑 输出 yi (向下传递 或 直接输出) …

JVM性能监测工具-JConsole

JVM性能监测工具-JConsole JConsole工具是JDK自带的图形化性能监控工具。并通过JConsole工具, 可以查看Java应用程序的运行概况, 监控堆信息、 元空间使用情况及类的加载情况等。 JConsole程序在%JAVA_HOM E%/bin目录下 或者你可以直接在命令行对他进…

【致敬未来的攻城狮计划】— 连续打卡第十天:FSP固件库开发及FSP配置详解。

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

手势语言识别模型训练及应用

使用训练集训练模型,使模型能够识别不同手势。 OpenCV-Python环境使用训练集训练模型,使模型能够识别不同手势。系统测试 本项目基于卷积神经网络,通过Python的翻转功能沿垂直轴翻转每个图像,实现手势语言识别的功能。系统流程如图…

数据治理与数据中台架构

随着工业 4.0 时代的到来,传统行业的数字化转型是大势所趋;将数据提高到数据要素层面,让传统的技术在新的场景下发挥出新的作用,是近期研究和探讨的焦点话题。数语科技支持和服务传统行业多年,聚焦于传统数据建模和数据…

catkin_make_workspace

ERROR1 : CMake Error at /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake:113 (message): Project ‘cv_bridge’ specifies ‘/usr/include/opencv’ as an include dir, which is not found. It does neither exist as an absolute directory nor in ‘${{pr…

.net6 core web项目发布部署到Linux,以守护进程服务的形式部署启动,nginx实现转发

一、发布项目 1、以文件夹形式 2、目标运行时选对应的平台(Linux-x64) 3、文件夹选项:在发布前删除所有现有文件 二、部署项目(安装.net6环境:参考Linux安装 dotnet sdk 6.0) (1)…