1.5k 1 分钟

# 工厂方法模式 属于创建型模式。 定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到其子类。 如果新增一个产品,只需要在原有的基础上进行扩展就可以了。 # 类图 创建抽象类和具体的类 创建工厂接口,由具体的工厂类实现接口 # 代码 # 需要实例化的类 namespace CreationalPatterns_FactoryMethodPattern{ public abstract class Shape { /// <summary> /// 形状 /// </summary>...
3k 3 分钟

# 工厂模式 属于创建型模式,是常用的设计模式之一。 工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工厂模式,可以将对象的创建与使用代码分离,提供一种统一的接口来创建不同类型的对象。 优点 一个调用者想创建一个对象,只要知道其名称就可以了。 扩展性高,如果想增加一个产品,只需要增加这个产品的类就可以了。 屏蔽产品的具体实现,调用者只关心产品的接口。 缺点 使用 CSharp 反射动态创建对象会有性能消耗 一定程度上增加了系统的复杂度 # 类图 创建接口,由具体的类实现接口 创建工厂类,利用反射动态创建对象 # 代码 # 接口 namespace...
1.5k 1 分钟

# Unity 异常处理 在 Unity 中,当程序发生异常时,整个程序不会立即中断,因为 Unity 使用了异常处理机制来捕获和处理异常(Unity 全局异常处理)。正是因为这种异常处理的机制,在编写 Unity 脚本的时候很少会用到 try-catch...
2.4k 2 分钟

# C# 特性(Attribute) 特性(Attribute)用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。.Net 框架提供了预定义特性和自定义特性。 # 语法 [Attribute(parameter_A, parameter_B = value, ...)]# 预定义特性 .Net 框架提供了三种预定义特性: Obsolete Conditional AttributeUsage #...
2.7k 2 分钟

# C# 异常处理(Exception) 异常是在程序执行期间出现的问题。异常处理是对特殊情况的一种响应,比如尝试除以零。 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。 C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。 try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch () 块。 catch ():程序通过异常处理程序捕获异常。在 () 中输入需要捕获的异常的类型。 finally:finally 代码块中的语句不管是否抛出异常都会执行。 throw:当问题出现时,程序抛出一个异常。使用...
3k 3 分钟

# UnityUI 淡入淡出 在 Unity 中实现各种与 UI 相关的淡入淡出的效果,例如:游戏进入和退出的淡入淡出,角色受伤时屏幕出现红色闪烁...... # 代码部分 由父类提供主要的方法,由子类实现其他细节 使用单例模式,可以更方便的寻找组件 利用 Image 组件实现屏幕遮罩 AnimationCurve(动画曲线)可以调整淡入淡出的过渡效果 颜色变化的处理:可以用 Update,也可以用协程(本文使用协程) 父类 ScreenFadeusing Common;using System.Collections;using UnityEngine;using...
18k 16 分钟

# 观前提醒 项目会在 GitHub 中开源,链接:https://github.com/Maikire/UnityGameDemo/tree/main/A simple web chat room 如果有什么问题或想法,欢迎各位在评论区留言。 # 网络聊天室 本章将制作一个基于 UDP 的网络聊天室,客户端与服务端都用 Unity 来实现(实际的开发中,服务端一定不是用 Unity 做的) 需求: 用户可以自由选择登录服务端或客户端。 客户端:输入名字、服务端的 IP 和端口后即可进行多人聊天。 服务端:输入服务端的 IP 和端口后即可开启服务,无法进行聊天,可以看到谁在线,以及他们的...
1.9k 2 分钟

# 线程交叉访问助手 为确保脚本生命周期的执行顺序,辅助线程不能访问 Unity 的 API。但是,在使用多线程的过程中,有些线程会不可避免的调用 Unity 的 API,此时就需要制作一个助手类来解决这个问题。 # 代码部分 助手类只需要一个,所以使用单例模式 使用委托调用需要执行的代码 提供延时调用的功能 代码如下: ThreadCrossHelperusing System;using System.Collections.Generic;namespace Common{ /// <summary> /// 线程交叉访问助手 ///...
20k 18 分钟

# 观前提醒 项目会在 GitHub 中开源,链接:https://github.com/Maikire/Unity/tree/main/UnityFramework/FSM # 有限状态机(Finite State...