![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
呆头熊的游戏开发日记
一只呆头熊
每天都要努力埋头敲代码~!向着游戏公司冲冲冲!!!
展开
-
[2022.3.15]<呆头熊的开发日记>游戏初始化Game类
游戏内基本都采用MVC模式实现,主要通过SendEvent来接收时间信息,决定下一步要怎么做。Game类继承于ApplicationBase,搭在游戏第一个场景,启动后自动跳到下一场景,并且在之后场景一直存在。using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;[RequireComponent(typeof(O.原创 2022-03-18 20:15:44 · 3471 阅读 · 0 评论 -
[2022.3.13]<呆头熊的开发日记>MVC框架(2)
三、ApplicationBase类 : MVC框架启动的入口public abstract class ApplicationBase<T> : Singleton<T> where T : MonoBehaviour { //注册控制器 protected void RegisterController(string eventName, Type controllerType) { MVC.RegisterContro原创 2022-03-14 01:03:05 · 334 阅读 · 0 评论 -
[2022.3.13]<呆头熊的开发日记>MVC框架
一、MVC组件类型的关系和功能二、Model 、View、Controller类1、Model:封装应用状态、发送通知(委托MVC完成using System.Collections;using System.Collections.Generic;using UnityEngine;public abstract class Model { //只读 public abstract string Name { get; } protecte原创 2022-03-14 00:59:58 · 724 阅读 · 0 评论 -
[2022.3.11]<呆头熊的开发日记>单例模式 Singleton
模板:using System.Collections;using System.Collections.Generic;using UnityEngine;public abstract class Singleton<T> : MonoBehaviour//对泛型T进行类型约束 where T : MonoBehaviour { private static T m_instance = null; private static T Ins原创 2022-03-12 01:04:54 · 208 阅读 · 0 评论 -
[2022.3.11]<呆头熊的开发日记>对象池
一、对象池原理1.一般对象动态创建----生命周期到了则消失。【消耗CPU:需要不断给对象申请内存空间,最后释放。】2.对象池:将对象存入对象池,需要时读取(OnSpawn),不需要时放入(OnUnspawn),则可以重复利用,减少频繁创建对象与删除对象的消耗。 二、结构1、IReusable接口:using System.Collections;using System.Collections.Generic;using UnityEn...原创 2022-03-12 00:56:13 · 282 阅读 · 0 评论 -
[2022.2.16]<UE4比赛项目日记> 4.游戏规则(2)
一、补充:1、攻击牌:当角色与怪物的距离为最近时,双方对彼此造成的伤害*2;且玩家会对怪物造成自身power值的stunpoints伤害。(因Enemy实例还没创建,图上未连接完全)2、防御牌:根据chara判断消耗agility或者magic。二、玩家角色行为:1. 当玩家主动跳过回合(空格键)时,会结算剩余属性(使用卡牌会削减后的)效果根据agility的值抽取对应的卡牌,0则不抽牌根据magic的值回复玩家skillpoints的值, 0 则不回复.原创 2022-02-18 22:02:43 · 2193 阅读 · 0 评论 -
[2022.2.13]<UE4比赛项目日记> 3.游戏规则(1)
一、游戏规则:1、每隔一定的时间(暂时用5s)进行循环(小回合),小回合结束时会有结算事件(玩家状态回复,回复费用等;怪物攻击更新等);每隔5次循环,称为一个大回合,大回合结束时有额外事件结算(循环数清零怪物重新选择movelist等)。开始<计时器、回合计数器>:...原创 2022-02-15 16:56:45 · 2609 阅读 · 0 评论 -
[2022.2.12]<UE4比赛项目日记> 2.战斗场景中的玩家移动
一、主动移动站位(Far、Midden、Close)-q键远离怪物,e键靠近怪物(对应枚举的变换)-只有“大回合”开始时才可调整站位二、攻击--向对应Enemy处移动鼠标选中对应Enemy,执行攻击牌,向其移动--攻击...原创 2022-02-15 15:53:55 · 251 阅读 · 0 评论 -
[2022.2.8]<UE4比赛项目日记> 1.卡牌使用条件
一、判断卡牌使用条件:1、判断消耗(cost)是否超出玩家资源值(攻击防御牌对应agility,技能牌对应Magic),超出则无法使用牌;2、在game mode(battlemanager)中创建布尔变量(can use card,can use attack card...)对应是否可以是用卡牌,是否可以使用攻击牌等,方便以后拓展功能。判断是否是true,若不是则无法使用牌;3、发动失败不会消耗卡牌和资源,在对应功能函数(attack,defend,skill)...原创 2022-02-15 14:08:32 · 402 阅读 · 0 评论 -
[2021.10.28]<呆头熊的开发日记>怪物AI
以下是各个小怪继承的父类【Enemy】脚本。主要功能包含:1.怪物自身受到伤害;2.受伤闪烁红色+粒子特效;3.玩家与怪物触碰受到伤害。using System.Collections;using System.Collections.Generic;using UnityEngine;public abstract class Enemy : MonoBehaviour //抽象类{ public int health; public int dama原创 2021-10-29 23:33:55 · 123 阅读 · 0 评论 -
[2021.10.28]<呆头熊的开发日记>怪物AI(4)
举盾牌小怪:(标签为Shield,而非Enemy)1.固定区域巡逻;2.前后无法攻击、受伤;3.发现玩家主动攻击;4.玩家仅能下落攻击对其造成伤害。using System.Collections;using System.Collections.Generic;using UnityEngine;public class ShieldM : Enemy{ private Rigidbody2D rb; public Transform leftpo..原创 2021-10-29 23:25:14 · 94 阅读 · 0 评论 -
[2021.10.26]<呆头熊的开发日记>Timeline & Cinemachine
今天一天都在跟队长一起研究Timeline,主要用来制作游戏剧情过场动画。了解过后感觉Timeline功能很强大!主要也用了Virtual Camera来锁定人物或场景之间的镜头,可在Timeline里实现运镜的效果(平滑过渡)。关于剧情对话UI:1.UI----Canvas-----Scale with screen size(自适应)---调整分辨率2.UI-----Panel----(换成2D视角)调整对话框大小---Alt + Shift + 位置(自动占满对齐)---适当调原创 2021-10-28 01:12:47 · 244 阅读 · 0 评论 -
[2021.10.25]<呆头熊的开发日记>UI界面&场景切换
主美把登陆界面和各种按钮都画好了,国风水墨的感觉超级好看!!!我们主美YYDS!!!登陆界面:1.添加UI---Canvas---Image2.添加Buttun3.写Scripts(场景转换)using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;public class MainMenu : MonoBeha原创 2021-10-27 23:55:50 · 162 阅读 · 0 评论 -
[2021.10.24]<呆头熊的开发日记>2D粒子效果
队长突然派任务= =让我赶紧去学一学粒子效果,啊这Σ(っ °Д °;)っ好的!!!主要是攻击\受伤\死亡\碎石的效果。学了一下,2D的粒子效果还是挺简单的(可能是我用的蛮简单的),主要是各种调参数有一点点点点繁琐而已。代码只有两句,放在需要产生效果的地方就可以了。public GameObject BloodEffect;Instantiate(BloodEffect, transform.position, Quaternion.identity);一般步骤就是:1.原创 2021-10-26 03:42:42 · 171 阅读 · 0 评论 -
[2021.10.22]<呆头熊的开发日记>怪物AI(3)
这次的敌人在之前最简单的蝙蝠精的基础上加上了远程攻击行行为。主要行为逻辑:1.在两点间飞行;2.发现玩家后对玩家进行远程攻击using System.Collections;using System.Collections.Generic;using UnityEngine;public class EnemyBat11 : Enemy{ public Transform wayPoint01, wayPoint02; private Transform wayPoi原创 2021-10-23 13:32:01 · 88 阅读 · 0 评论 -
[2021.10.21]<呆头熊的开发日记>怪物AI之有限状态机(1)
经过跟队长的一致讨论,决定还是用<有限状态机>来实现怪物的行为逻辑,这样耦合性更低,更好操作。这次的还是定点巡逻的小怪。有三个脚本文件,IState作为接口,NewIdleS记录所有存在的状态,NewFSM为有限状态机。具体实现形式:1.接口:public interface NewIstate{ void OnEnter(); void OnUpdate(); void OnExit();}2.记录所有存在的状态:using Sy原创 2021-10-23 12:58:39 · 186 阅读 · 0 评论 -
[2021.10.19]<呆头熊的开发日记>怪物AI(2)
把之前写好的蝙蝠精整合导入。蝙蝠精行为逻辑也很简单,主要是:1.在固定范围内飞行;2.轨迹随机;3.不主动攻击;4.触碰则受伤using System.Collections;using System.Collections.Generic;using UnityEngine;public class EnemyBat : Enemy { public float speed; public float startWaitTime; private floa原创 2021-10-20 11:36:05 · 87 阅读 · 0 评论 -
[2021.10.18]<呆头熊的开发日记>怪物AI(1)
今天,跟队长一起将我之前做的怪物系统与他自己做的人物行为、技能系统整合到一起。但是我由于第一次做怪物AI,所以整体并不是很熟练,导致整合过程中耦合问题挺大的= =…甚至有一些脚本名称重合导致队长那边的系统冒出了挺多的报错。下午队长就跟我开腾讯会议,分享屏幕让我把一个一个怪物设计逻辑讲清楚(其实我也写了文档的,但是对着代码讲或许更清晰)然后因为耦合大的问题,我们重新把代码里的功能重新复制进去。还好每一只怪物地代码不多,所以这也解耦就还好,也蛮快的。首先是一只设定是绕着平台不断行走地“壁原创 2021-10-19 02:08:11 · 297 阅读 · 0 评论