最近一方面在学javaScript,一方面在运营萤光网站,一方面忙于学业,一方面在学Unity,每当晚上我就会去看Joker的ARPG游戏开发教程,其中有一些好的思路,我觉得可以记录一下。之前我把鬼哥(up鬼鬼鬼ii)的ARPG课程看完了,再来看Joker的,对比一下有一些值得提的地方。
一、有限状态机控制玩家和敌人AI之前看鬼哥的课,全程是用Animator窗口来控制角色状态,要进行复杂的连线。后来我看了Joker的教程,还有一个印度人复刻原神的教程,感觉他们在这点的做法要更好——完全利用有限状态机去控制角色状态,不管是玩家、还是敌人。其实用不用Animator,都能实现相应的功能,没有哪个更好。Animator连线好处是便于理解、更直观,缺点是状态多起来就难以维护了;有限状态机优点是逻辑清晰,只需要考虑转换什么状态就可以了,本质上和Aniamtor窗口其实一模一样,缺点是难以理解。对初学者,我建议还是要用Animator窗口连线,便于理解;学一段时间后再试着去理解有限状态机的概念。Joker的有限状态机,最开始我是根本看不懂,现在觉得他的有限状态机写的很好。我见过比较好的有两种有 ...
注:请勿用于违法、违规行为,仅出于个人学习目的。
为了整理自己Alist上的文件,我突发奇想,能不能让最近很火的deepseek写python脚本,爬取我的Alist网站并打印出路径呢?于是用AI写了三个脚本。
123456789101112131415161718192021222324252627282930313233343536373839404142434445import requests# 配置信息ALIST_URL = "http://xxxxx.xxx/" # Alist网盘地址TARGET_FOLDER = "xxxx" # 目标文件夹路径OUTPUT_FILE = "output.txt" # 输出文件名# 获取文件夹列表def get_folder_content(parent_path): url = f"{ALIST_URL}/api/fs/list" params = { "path": f&q ...
Unity
未读注:25年2月24日进行补充这篇文章介绍一下公共Mono模块。
为什么有公共Mono模块?
很多时候我们写代码,不想继承MonoBehaviour类(比如减少性能开销、简化代码量,MonoBehaviour),但又想用MonoBehaviour里Update、Start等方法。这时候就需要搭建公共Mono模块来实现我们的需求了。
思路
以实现Update为例,既然我们知道,不继承MonoBehaviour类的不能直接调用Update等方法,那么有没有什么办法、把我们的方法塞到update里呢?
答案是有的,这里有个知识点是“委托和事件”,我们可以把我们的方法、塞到委托里,在继承Mono的脚本里调用这个委托就可以了。
下面第一种是跟着唐老狮写得,写了两个脚本,但个人不太喜欢这种,觉得比较臃肿,写成一个脚本就好了。
123456789101112131415161718192021222324252627282930313233343536373839404142using UnityEngine.Events;public class MonoController : MonoBeha ...
Unity
未读有限状态机实现方式不止一种,这里标题为第三版,不是说前面几版不好,而是又提供了一种新的有限状态机写法。我之前对有限状态机的想法是,用来做敌人AI,现在再次开阔视野,可以用代码的形式来替代Animator窗口复杂的连线(之前也有人推荐我用Animancer插件,等我学到了我再学),简洁清晰地转换状态。这个思路主要借鉴自Joker老师的RPG进阶教程,有能力的话大家可以去支持一下Joker老师。
思路分析
再开始写代码前,我们需要先分析自己的需求:
首先是状态机,大概分为敌人状态机、玩家状态机,那么就声明个基类状态机最好。状态机怎么写?首先我们需要一个字典容器来存储所有的状态,然后我们需要一个转换状态的方法,然后我们还需要存储下当前状态,就写一个GetState的方法。
状态怎么写?首先我们有个状态基类StateBase,记录所有状态都要有的方法;再分别写PlayerStateBase和EnemyStateBase继承StateBase,最后我们具体的状态再次分门别类的继承,这样就很有条理了。
实践过程
在设计有限状态机前,我们先设置好我们的状态基类StateBase,记录下我们所有要执 ...
本文是前端之CSS进阶知识点总结,因为前端学习2写的太长了、也算比较全面,于是再写一个进阶篇。
HTML5新特性
HTML5语义化标签
只使用IE9以上的。IE9需要转化为block
<header>头部标签;<nav导航标签;<article>内容标签;<section>定义文档某个区域;<aside>侧边栏目标签;<footer>尾部标签;
视频标签
1<video src = "" controls = "controls" autoplay = "autoplay" muted = "muted" loop = "loop"></video>
音频标签
1<audio src="" controls="controls" loop="loop" autoplay="autoplay" >< ...
前言:由于css内容实在是太多,我发现仅凭我一个人根本写不完,于是我会在本文档引用一些外部链接,可以跳转去看其他人的文档。我现在还在思考怎么去写这个css笔记,它和html不一样,html好总结,所以我会陆续进行修改更新。等我完全完成了这些任务,会发到github上。
接下来我们将要学习css,如果要讲完所有css知识点,对我来说是不可能的,因为css太多了。曾经有本砖头厚的书、记录的全是css,所以我只能总结常用的。css是个博大的学问,具体要实现什么需求时、再具体去学习。不过我会在其他文章记录一些比较流行的css特效。
我建议读者在学习时,自己建个html文件,把我写的css粘贴到里边看效果(博客展示不方便,容易乱,因为我文章用html写的)
css知识点
基础语法
css规则由两个主要部分:选择器和声明,一个生命有一条属性和一个值,属性间用分号隔开。
123456<style>.hljs { background: #f5f5f5;}</style>.hljs是选择器,background是属性、#f5f5f5是值
css的引入 ...
在研究很长时间后,我发现一个奇妙的存储方案。真正意义上实现零成本、无限容量存储,安全性一般先来介绍一下我们的方案,原理是利用telegram做我们的资源存储、利用serv00搭建的网站来上传、下载我们的资源,风险的话是滥用可能会被telegram封号。但根据调查滥用的人还是比较少的,只要不往死里作、滥用也不会封号。
如何部署?
前置准备:申请一台serv00虚拟主机,网上有很多教程,可以参考。现在申请一般都是挂代理,用siteproxy反代网站——实在不行找人代申请。
为什么用serv00呢,原因是它不限制流量,但是不要玩太过火了、滥用serv00也可能被封号。
首先项目来自于tgDrive,我们打开它,从右边Releases下载最新的jar文件,我这里是0.0.8,于是拿着个举例子。
之后打开登录到我们的serv00虚拟主机,之后在port resservation申请一个端口,这里我申请的是60062;再之后我们在WWW website添加反代,type选择proxy,绑定我们申请的端口。接着在File Manager上传我们的jar文件,用任何一款ssh软件连接到我们的serv0 ...
galgame
未读在此之前,已经为猫猫社作品《すみれ》里的筱原明里写过很多文章,但我总觉得不太满意,原因是总是有所顾虑。比如,我不太了解片冈智的生平经历,我也不敢保证我对作品的理解正确,但我还是想,就筱原明里这个角色写下我自己的看法。或许可能是我的胡乱猜测和臆想,但我还是想大胆地写下来自己的想法。所以这篇文章是不严谨的,仅代表我自己对片冈智、对筱原明里的理解。
片冈智的缩影
在《水仙:堇》开头,片冈智就说过,关于筱原明里的故事可能很难理解,但他还是想强行加到游戏里;后来猫猫社发布的几个后续游戏里,总能看到有关于筱原明里的新的故事内容。
为什么片冈智对这个人物很执着?不惜破坏《水仙:堇》的体验、在后续作品屡次为这个角色补充新的情节?我觉得,因为筱原明里正是片冈智的一部分缩影,因为这个角色是以片冈自己为原型创作了、融入自己最真实的感受,所以片冈才对这个角色如此执着。
我之所以会这么觉得,有很多依据吧。第一是当看到《すみれ》里细致的心理描写时,我就觉得,如果不是有亲身体验、经历过孤独、自卑、逃避心理的人,是不会写出这样的文字的,因为他无法体会、更无法写出这样的文字。第二便是来自于片冈智创作的名为“1993” ...
最近做ARPG小项目,新写了一套连招逻辑,感觉要比较好用些。优点是不需要再考虑索引值什么东西了,代码很好理解,于是分享一下。
思路分享我的思路是这样的,做一个连招表,连招表上最重要的新功能有两个:一个是nextCombo,即按下鼠标左键做的招式;另一个是branchCombo,即按下鼠标右键做的招式,对于伤害处理,考虑到一个动画可能会触发多段伤害,我们是用List数据结构+动画事件来配置。这个List里配置好受伤动画名称、伤害值等数据。首先我们写连招表:
123456789101112131415161718192021222324252627282930313233343536using System.Collections.Generic;using UnityEngine;[CreateAssetMenu(fileName = "ComboData", menuName = "Scriptable Objects/ComboData")]public class ComboData : ScriptableObject{ [ ...
两个月前,当我在做Unity音效池时,遇到神奇的bug。我手写的一个字典poolDic,刚开始好好的、包含一个名为“ATK”的key,结果呢当我调用动画事件时直接这个key消失了,我也没在外部去修改,困扰我整整两个月。后来经过排查,发现是单例模式基类的问题,不够安全。我记得当时这个单例模式是跟唐老狮学的,老师说除了一些个别情况、这个单例模式非常安全,结果我遇到了这种“个别情况”,于是优化一下代码,把问题解决了。可以在我的“单例模式”那篇文章看到改进。