Unity拖动2D和3D物体
/*
首先说一下,Input.mousePosition是鼠标所在像素平面内的坐标,需要根据自己的需求转变成世界坐标。
Description 描述
The current mouse position in pixel coordinates. (Read Only)
在屏幕坐标空间当前鼠标的位置(只读)。
The bottom-left of the screen or window is at (0, 0). The top-right of the screen or window is at (Screen.width, Screen.height).
屏幕或窗口的左下角是坐标系的(0,0)坐标。右上角的坐标是(屏幕宽度值,屏幕高度值)。
*/
123456789101112131415161718192021222324252627//这里用于2D场景物体的移动,可以参考一下。private bool isMouseDown;private Vector3 lastMousePosition = Vector3.zero;private void TwoDMove() ...
AssetBundle热更新完整工作流与知识点解析
前言
虽然这一块内容是比较基础的,但是知识点比较分散,所以我还是决定写一篇博客来记录梳理一下。
环境:Unity 2018.4.0
参考文献
Unity官方文档:https://docs.unity3d.com/Manual/index.html
不会C++的码农知乎文章:https://zhuanlan.zhihu.com/p/25111851
AssetBundle相关知识
什么是AssetBundle?
一个AssetBundle可以当做一个文件集合,它包含了Unity可以在运行时加载的特定于平台的非代码资产(例如模型、纹理、预制组件、音频,甚至整个场景)。AssetBundle可以表示彼此之间的依赖关系;例如,一个AssetBundle中的material可以引用另一个AssetBundle中的texture。为了在减轻网络传输压力,您可以根据需求选择内置算法(LZMA和LZ4)来压缩AssetBundle。
AssetBundle对于可下载内容(DLC)、减少初始安装大小、加载针对最终用户平台优化的资产以及减少运行时内存压力都很有用。
AssetBundle里有什 ...
Unity DOTS:ECS的核心部分
ECS的概念
实体组件系统(ECS)架构将身份(Entities,实体),数据(Components,组件)和行为(Systems,系统)分开。该架构专注于数据。Systems读取Components数据流,然后将数据从输入状态转换为输出状态,然后对这些实体进行索引。
下图说明了这三个基本部分如何协同工作:
在此图中,系统读取Translation和Rotation部分,将它们相乘,然后更新相应的LocalToWorld成分(L2W = T*R)。
实体A和B具有Renderer组件,而实体C则没有,但是这不会影响系统,因为系统并不关心Renderer组件。
您可以设置一个系统,使其需要一个Renderer组件,在这种情况下,系统将忽略实体C的组件。或者,您也可以设置系统以排除具有Renderer组件的实体,然后忽略实体A和B的组件。
Archetypes(原型)
组件类型的组合称为“原型”。例如,一个3D对象可能具有一个用于其世界变换的组件,一个用于其线性运动的组件,一个用于旋转的组件和一个用于渲染的组件。这些3D对象的每个实例都对应一个实体,但是由于它们共享相同的组件集,因 ...
Unity DOTS:Entities部分
Entities
Entities是实体组件系统体系结构的三个主要元素之一。它们代表游戏或应用程序中的各个“事物”。Entities既没有行为也没有数据;取而代之的是,它担任索引各种数据的职责。Systems提供行为,而Components存储数据。
entity本质上是一个ID。最简单方法是把它作为一个超轻量级GameObject甚至没有名称。实体ID稳定;您可以使用它们来存储对另一个component或entities的引用。例如,Hierarchy中的子entity可能需要引用其父entity。
一个EntityManager管理在一个World中所有的entities。EntityManager维护entities列表并组织与entities相关联的数据以实现最佳性能。
尽管实体没有类型,但是可以按与entities相关联的components的类型对其进行分组。创建entities并向其添加components时,EntityManager会持续跟踪监控entities上components的唯一组合。这种独特的组合称为Archetype(原型)。将components添 ...
Unity DOTS:目录
前言
本篇博客汇总个人Unity DOTS相关文章,方便好兄弟们查看
目录
Unity DOTS:入门简介:https://www.lfzxb.top/unity-dots-ecs-burst-complier-jobsystem/
Unity DOTS:ECS的核心部分:https://www.lfzxb.top/unity-dots-core-of-ecs/
Unity DOTS:拓展内容:https://www.lfzxb.top/unity-dots-extension/
Unity DOTS:Entities部分:https://www.lfzxb.top/unity-dots-part-of-entities/
Unity DOTS:Components部分:https://www.lfzxb.top/unity-dots-part-of-components/
Unity DOTS:Systems部分:https://www.lfzxb.top/unity-dots-systems/
Unity DOTS:使用ECS进行GamePlay开发:https://www. ...
Unity Profiler学习笔记:初识Profile性能分析工具
前言
本系列笔记内容参考自官方文档
什么是Profiler
Unity Profiler是一个工具,您可以使用它来获取关于应用程序的性能信息。您可以将它连接到云端的设备或连接到本机器上的设备,以测试应用程序在预期的发布平台上如何运行。您还可以在编辑器中运行它,以在开发应用程序时获得资源分配的信息。[toc] Profiler收集并显示应用程序在CPU、内存、渲染和音频等方面的性能数据。可以定位应用程序中性能需要改进的地方,你可以精确定位你的代码,资产,场景设置,相机渲染,以及Build Setting影响应用程序的性能。它以一系列图表的形式显示结果,因此您可以可视化应用程序性能的峰值发生在何处。
如何查看Profiler
Window > Analysis > Profiler
包含内容
开始使用Profiler窗口
分析应用程序
CPU使用分析器模块
呈现分析器模块
内存分析器模块
音频分析器模块
物理性能分析模块
GPU分析器模块
全局光照分析器模块
UI分析器模块
开始使用Profiler窗口
Profiler布局
A:Profiler控制菜 ...
Unity Profiler学习笔记:监测你的应用
前言
要在目标发布平台上配置您的应用程序,请将目标设备连接到您的网络或通过电缆(emmm,应该指的是usb,typec,雷电这种吧)直接连接到您的计算机。您还可以在Unity编辑器中直接对应用程序进行分析,以便在应用程序开发期间大致分析结果。
Remote profiling(远程性能分析)
你只能在Development Build勾选的情况下才能对应用程序进行性能分析。要设置此设置,请转到Build Settings(File > Build Settings)并选择应用程序的目标平台。 您还可以选中Autoconnect Profiler,使Unity编辑器在构建过程中将其IP地址烘焙到内置播放器中。当你启动播放器时,它会尝试连接到分析器 指向位于烤好的IP地址的编辑器。 当您构建并运行应用程序时,播放器将出现在Profiler窗口的Attach to player下拉框中。“Attach to Player”下拉菜单显示所有运行在你本地网络上的Unity应用。您可以根据应用类型和运行应用的主机名(例如,iPhonePlayer (Toms iPhone))来识别这 ...
NPBehave(行为树)中文文档
前言
NPBahave是GitHub上开源的一个行为树,其代码简洁有力,与Unity耦合较低,适合拿来做双端行为树。注意,由于时间关系,原文中的链接这里将不再提供引用。
开源链接
https://github.com/meniku/NPBehave
正文
NPBehave致力于:
轻量,快速,简洁
事件驱动
易于拓展
一个用代码定义AI行为的框架,目前没有可视化编辑器支持(本人将为其贡献一个)
NPBehave基于功能强大且灵活的基于代码的方法,从behavior库定义行为树,并混合了虚幻引擎的一些很棒的行为树概念。与传统的行为树不同,事件驱动的行为树不需要每帧从根节点遍历。它们保持当前状态,只有在实际需要时才继续遍历。这使得它们的性能更高,使用起来也更简单。
在NPBehave中,您将发现大多数节点类型来自传统的行为树,但也有一些类似于虚幻引擎中的节点类型。不过,添加您自己的自定义节点类型也相当容易。
安装
只需将NPBehave文件夹放入Unity项目中。还有一个Examples子文件夹,其中有一些您可能想要参考的示例场景。
例子:“Hello World” 行为 ...
计算机组成原理复习纲要
计算机系统概述
冯 诺依曼计算机
五大功能部件
基本要点
计算机由五大部件组成,采用二进制形式表示数据和指令。
采用存储程序方式。
输入设备
将程序和数据以机器所能识别和接受的信息形式输入到计算机内。
比如键盘、鼠标、扫描仪、语音输入设备、手写笔、触摸屏、数码摄像设备等。
输出设备
将计算机处理的结果以人们所能接受的信息形式或其它系统所要求的信息形式输出。
如显示器、打印机、绘图仪 、音箱等。
存储器
用于存放程序和数据。存储器是计算机存储信息的核心。
主存储器(主存,内存)
CPU能直接访问,主存分为若干个存储单元,每个单元都有唯一的地址编码,通常是按字节或字节的整数倍编码。存储器总是按地址访问的,
辅助存储器(外存,辅存)
CPU不能直接访问,辅存中的信息必须调入主存后,才能为CPU所使用。
辅存速度较慢,但容量大,用于存放CPU暂时不用的程序和数据。
比如软盘、硬盘、光盘、磁带机等。
运算器
用于对数据的加工处理,完成算术逻辑运算。
组成
核心是算术逻辑部件(Arithmetic and Logical Unit),简称为ALU。
还有若干寄存器,用于存放操作数、中间结果或 ...
软件工程重点知识整理
前言
。。。没啥好说的,真是太痛苦了
基础知识汇总
单句
一
从结构化的瀑布模型看,在它的生命周期中的各阶段中,需求分析阶段出错,对软件的影响最大。
螺旋模型将瀑布模型和演化模型相结合,并增加了风险分析。
结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的数据流。
进行需求分析可以使用数据流图(DFD),判定表,数据字典。
在面向数据流的软件设计方法中,一般将信息流分为变换流和事务流。
PAD图的控制执行流程为自上而下,从左到右。
概要设计阶段产生的文档包括概要设计说明书,数据库设计说明书,用户手册。
与选择编程语言有关的因素是软件开发的方法,软件执行的环境,软件开发人员知识。
软件工程针对维护工作的主要目标是提高软件的可维护性,降低维护的代价。
开发软件工具的主要目的是为了提高软件生产率和改善软件质量。
在软件需求分析中,必须采用合理的步骤,才能准确地获取软件的需求,可归纳为4个步骤:需求获取,分析建模,文档编写,需求验证。
耦合衡量不同模块彼此间互相依赖(连接)的紧密程度,模块间的耦合性越高,其模块的独立性就越弱。
在面向对象的设计方法中,对象 ...