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 和端口后即可开启服务,无法进行聊天,可以看到谁在线,以及他们的 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...
2.4k 2 分钟

# 配置文件读取器 获取文件内容:输入 StreamingAssets 下的文件路径,利用路径助手处理路径,读取文本文件(.txt),返还文件的内容(字符串) 读取配置文件的方法:根据提供的字符串和对应的处理方法处理字符串 WWW 和 UnityWebRequest 的写法不同,使用的时候二选一即可(建议使用 UnityWebRequest) Web 端利用 UnityWebRequest 读取文件,其他平台利用 IO 流读取(如果未经过路径助手处理,则只有 PC 端可以用 IO 流读取文件,其他平台仍然需要用 UnityWebRequest 读取文件) #...
6.6k 6 分钟

# 观前提醒 项目会在 GitHub 中开源,链接:https://github.com/Maikire/Unity/tree/main/UnityFramework/A simple ARPG character framework # 框架设计 角色状态类:角色的基础信息和基础行为(抽象类) 角色的动画:因为动画参数的名字可能会改变,所以单独做一个类储存名字 角色的移动方式:提供移动的方法,由输入控制类调用 输入控制:处理玩家的输入方式,例如:摇杆、键鼠、手柄......(本章以这个摇杆为例) 角色选择器(可选):选中目标后显示选中特效 # 代码 #...
23k 21 分钟

# 观前提醒 项目会在 GitHub 中开源,链接:https://github.com/Maikire/Unity/tree/main/UnityFramework/A simple ARPG skill framework # 做框架之前的一些准备 在开始写框架之前需要有一些准备好的资源 # 角色 模型和动作 使用这个角色框架 基于动画事件行为类给动画添加事件 Animator 如图所示: # UI 使用这个 UI 框架 使用这个摇杆控制角色的移动 有关 UI 事件的代码在下文中会讲到 规定:按钮的名字必须是技能的 ID UI 如图所示: # 技能预制件 预制件需要放在...
3.1k 3 分钟

# 对象池 作用:将物体放到一个集合中,可以循环利用 适用性:适合频繁生成和销毁的物体,比如:子弹、技能、特效...... 对象池只有一个,所以使用单例模式 循环利用时需要做初始化,不同的物体有不同的初始化方法,所以使用接口 代码如下: ObjectPoolnamespace Common{ // 可重置的 public interface IResettable { void OnReset(); } /// <summary> /// 对象池 /// </summary> public...
991 1 分钟

# 资源管理器 需要生成资源配置文件 利用配置文件读取器读取配置文件 对外提供查找文件的方法(输入文件名即可得到对应的文件) 代码如下: ResourceManagerusing System.Collections.Generic;using UnityEngine;namespace Common{ /// <summary> /// 资源管理器 /// </summary> public class ResourceManager { // 名称,路径 private static...
1.5k 1 分钟

# 生成资源配置文件 作用:查找 Resource 目录中的文件(本文以预制件为例),在 StreamingAssets 文件夹中生成配置文件(指定配置文件的格式为:文件名 = 文件路径) 注意:代码文件需要放到 Editor 文件夹中 GenerateResourceConfigusing System.IO;using UnityEditor;/// <summary>/// GenerateResourceConfig/// </summary>public class GenerateResourceConfig :...