
Unity
文章平均质量分 77
Altair_Alpha_
这个作者很懒,什么都没留下…
展开
-
Unity之C#学习笔记(18):命令模式 Command Pattern
前篇链接:Unity之C#学习笔记(17):对象池模式 Object Pooling命令模式是一种行为型设计模式。通常,当对象A需要对象B做某件事时,是在A中直接调用B的函数实现,这个过程增加了A和B的耦合度。命令模式在这个过程中增加一个中间的抽象层,将A要求做某件事抽象封装为一个“命令”对象,A作为发出者只需发出命令,交由中间类处理,而无需知道具体接收者是谁,同理接收者也是接收来自中间类的命令,实现了命令发出者和接收者的解耦合。当然,代价就是增加了一个抽象层,使代码结构变得复杂。命令模式有一个很实用的原创 2021-02-03 16:34:17 · 781 阅读 · 2 评论 -
Unity之C#学习笔记(17):对象池模式 Object Pooling
前篇链接:Unity之C#学习笔记(16):单例模式及单例模板类 Singleton and MonoSingleton在游戏中,有一些生命周期很短,需要频繁创建和销毁的物体,例如原创 2021-02-03 12:06:18 · 802 阅读 · 0 评论 -
Unity之C#学习笔记(16):单例模式及单例模板类 Singleton and MonoSingleton
前篇链接:Unity之C#学习笔记(15):特化委托Action, Func和Lambda表达式从这节开始,我们来讲几个在游戏设计中非常实用的设计模式,先看单例模式。还是从一个实例入手。在游戏设计中,通常会采用模块化的设计思想,将游戏功能分解成多个具体的功能模块,并用一个Manager类脚本来管理实现该模块下的功能,比如总管全局的GameManager,管理UI的UIManager,管理声音的AudioManager等等。通常,这些脚本会绑定到一个作为载体的空物体上。既然是管理者,这些类只需要也只应该有原创 2021-02-02 17:51:14 · 1825 阅读 · 1 评论 -
Unity之C#学习笔记(15):特化委托Action, Func和Lambda表达式
前篇链接:Unity之C#学习笔记(14):委托和事件 Delegates and Events前一篇中我们已经讲了C#中的委托(不清楚的小伙伴可以点击上面的链接),这节来聊聊两种“特化”的委托:Action和Func。Action,就是只有参数没有返回值的委托。只有参数,意思是函数可以有零个、一个或多个参数,没有返回值,即返回类型为void。Action从字面意义上很好理解,“一个活动”,就是做一件事,做完就行了,不用报告结果。从一个简单的例子看起:Player脚本当按下空格键时要掉血,同时通知UI原创 2021-02-02 15:33:02 · 790 阅读 · 0 评论 -
Unity之C#学习笔记(14):委托和事件 Delegates and Events
前篇链接:Unity之C#学习笔记(13):枚举 Enums博主初学Unity时曾遇到过两个问题:一是我在类A中要调用类B的方法做一些事,希望类B做完了能再“通知”类A(调用类A的某个其他函数),然后写到A调用B的函数后就不会了;二是当某个方法被调用时,需要调用一些其他类的方法,例如角色死亡时,要通知UI类显示文字,要通知动画类播放动画,还要通知角色类更新状态,代码写出来就是一堆类互相引用,看着一团乱麻。现在回想起来,这些初学者的问题实际上涉及了一个很核心的内容:事件和消息机制。而C#正为我们提供了一套灵原创 2021-02-01 21:41:24 · 450 阅读 · 0 评论 -
Unity之C#学习笔记(13):枚举 Enums
前篇链接:Unity之C#学习笔记(12):属性 Properties还记得大一学C语言时,学到一大半被指针和链表绕的稀里糊涂之后老师讲了枚举和联合,当时也不太理解有什么用,而且看着也不像考点子。后来开始写大一些的项目后才发现确实是很实用的。枚举(Enums)的作用其实很简单,就是提高程序的可读性,可理解性。一个简单的例子:你要设计一个游戏关卡,关卡有可选的四种难度(简单、普通、困难和专家),如何描述?第一个想法:使用4个bool值,isEasy,isNormal…值为true代表选择了对应难度。但这样原创 2021-02-01 18:08:03 · 1314 阅读 · 0 评论 -
Unity之C#学习笔记(12):属性 Properties
前篇链接:Unity之C#学习笔记(11):静态类型 Static原创 2021-02-01 09:58:10 · 787 阅读 · 0 评论 -
Unity之C#学习笔记(11):静态类型 Static
前篇链接:Unity之C#学习笔记(10):接口和多态 Interfaces and Polymorphism静态类型(Static)用一句话概括就是:在程序运行期间只会被创建一份的通用内容,用关键字static修饰,主要包括静态类、静态变量和静态方法。我们这里主要讨论静态变量和静态方法。这一篇博文给出了比较详细的介绍,可以作为补充:C# 之 static的用法详解。静态变量和方法是类中的成员...原创 2021-02-01 09:52:25 · 4512 阅读 · 0 评论 -
Unity之C#学习笔记(10):接口和多态 Interfaces and Polymorphism
前篇链接:Unity之C#学习笔记(9):抽象类和抽象方法 Abstract Classes and Methods深入理解接口:为什么放弃了多继承?接口是什么?在上一节末尾,我们提出了一个问题:对于一个现有的类,如果想对其扩展,让它支持某种“特性”,该怎么做?很自然的想法是利用继承,使这个类继承于包含了满足这个特性的方法的基类。然后可能正如你刚学接口的概念时发现的,Java和C#都不支持多继...原创 2021-02-01 09:41:15 · 1272 阅读 · 0 评论 -
Unity之C#学习笔记(9):抽象类和抽象方法 Abstract Classes and Methods
前篇链接:Unity之C#学习笔记(8):虚函数,方法隐藏和方法重写 Virtual Methods, New and Override在上一节的末尾,我们提出了一个问题:如果基类过于抽象以至于我们无法对其中的方法给出合理的实现,而派生类很具体时,应该如何写基类中的方法?最简单的方法当然是:在基类中写一个空方法,什么也不干,留给派生类去重写。但这样做有一个问题:如果派生类中没有重写这个方法呢?如...原创 2021-01-31 18:07:33 · 2584 阅读 · 0 评论 -
Unity之C#学习笔记(8):虚函数,方法重写和方法隐藏 Virtual Methods, Override and New
前篇链接:Unity之C#学习笔记(7):类的继承 Inheritance在这节,我们要重点讲解几个容易混淆的概念:虚函数,方法隐藏(New)和方法重写(Override)。续接前篇,我们现在要解决的问题是:让基类和派生类同名同参的方法做出不同行为,也就是表现出“多态”(Polymorphism)。Tips 1:在开始前,我们先把另一个名称很相似的概念解决掉:方法重载(Overload)。...原创 2021-01-31 18:02:26 · 2283 阅读 · 1 评论 -
Unity之C#学习笔记(7):类的继承 Inheritance
前篇链接:Unity之C#学习笔记(6):数组 Array在这节,我们来看C#中类的继承和虚函数。类是将对象抽象成变量和方法的集合。当我们定义一个新类B时,如果该类拥有之前定义的类A的全部特征,那么就可以将A作为基类,而把B作为A的子类(派生类),使B继承A全部的成员变量和方法,不论是public、protected还是private,大大减少了代码的重复。在派生类中,这些变量和方法可以直接使...原创 2021-01-31 17:56:55 · 1600 阅读 · 0 评论 -
Unity之C#学习笔记(6):数组 Array
前篇链接:Unity之C#学习笔记(5):Unity中旋转的表示——四元数 Quaternion(下)从本节开始,我们回归C#核心内容,先从数组讲起。我们之前已经学会了创建各种类型的变量。很多时候,我们会碰到一组类似的数据(例如班上所有人的姓名),而希望有办法对它们进行统一的存储和处理。数组的作用就是提供一个能存放多个相同类型数据的容器。虽然叫“数”组,但可以存放的不仅是数,而是各种数据类型以...原创 2021-01-31 17:33:26 · 4364 阅读 · 0 评论 -
Unity之C#学习笔记(5):Unity中旋转的表示——四元数 Quaternion(下)
前篇链接:Unity之C#学习笔记(4):Unity中旋转的表示——四元数 Quaternion(上)在上节中,我们学习了代表无旋转的静态量Quaternion.identity和将欧拉角转换为四元数的方法Quaternion.Euler,它们在初始化中很常用。在这节,我们讲解另外两个方法Quaternion.LookRotation和Quaternion.Slerp,它们能为你实现实时追踪目标...原创 2021-01-31 17:26:46 · 1163 阅读 · 2 评论 -
Unity之C#学习笔记(4):Unity中旋转的表示——四元数 Quaternion(上)
前篇链接:Unity之C#学习笔记(3):“吃掉”道具——碰撞事件的基本处理 Collision在一个物体的监察面板中,Transform属性栏的第二项Rotation就是物体的旋转,分别是沿xyz轴旋转的角度。而实际上,旋转的完整表示不是由3个,而是4个数字:x, y, z, w构成的,而且前三个值也不等于沿xyz的旋转角度。这种结构称为四元数Quaternion。让我们先来看官方文档是怎么说...原创 2021-01-31 17:16:16 · 2182 阅读 · 0 评论 -
Unity之C#学习笔记(3):“吃掉”道具——碰撞事件的基本处理 Collision
在这一节,我们将通过一个"吃掉"道具的例子来看如何处理基本的碰撞事件。续接上节,我们已经创建了一个可以用键盘控制上下左右移动的“Player”,接下来,我们来制作一个玩家可以“吃掉”的道具。新建一个物体Powerup,让它作为“吃”的对象。同时新建一个用于控制这种被吃的物品的脚本Collectable。所谓“吃掉”,就是我们收到了这个信号,就让道具消失掉,再给Player加一些效果就好了。在...原创 2021-01-31 17:08:26 · 2307 阅读 · 0 评论 -
Unity之C#学习笔记(2):键盘操控物体进行简单的移动 Simple Movement
在这一节,我们将实现用键盘操控一个物体进行上下左右的简单移动。续接上节,我们创建了一个Player,一个PlayerController脚本。键盘操控物体移动,也就是当我们按下了特定的按键时,物体对应的position属性应该发生改变。我们先看如何让物体动起来。最直接的方法是直接修改position的值。position是一个Vector3变量,我们就用上一帧的position在xyz三方向均...原创 2021-01-31 17:04:45 · 2556 阅读 · 0 评论 -
Unity之C#学习笔记(1):三种方式让你的脚本控制物体
上一篇链接:Unity之C#学习笔记(0):环境配置与上手在这一节,我们将初步理解脚本与物体的关系。创建一个物体,命名为Player。然后创建一个C#脚本PlayerController,并绑在Player上。首先我们要理解,Unity中的一个物体的状态,是由它的各种属性控制的。例如这个Cube,我们看右边的视察面板:它的属性有:Transform、Mesh Filter和Mesh Ren...原创 2021-01-31 16:55:53 · 3998 阅读 · 1 评论 -
Unity之C#学习笔记(0):环境配置与上手 HelloWorld
前言这个系列是博主自学Unity实战中C#编程部分的随记。内容参考Unity Learn中的课程:Unity C# Survival Guide,链接:https://learn.unity.com/course/unity-c-survival-guide?language=enUnity官网的Unity Learn栏目提供了不少优质的课程,而且近期由于疫情影响全部免费开放。内容基本为英文授...原创 2021-01-31 16:38:17 · 1342 阅读 · 0 评论