前言:本文纯属自嗨文,主要是写给我自己看的,记录曾经的一些、有价值和回忆的事情,让我自己做梦都能笑醒hh,毕竟谁不喜欢夸自己呢。
galgame入坑篇2022年6月份,同学“汐卡酒酒”向我推荐了《Teaching Feeling》这款游戏,告诉我这类游戏是Galgame。尽管现在关于Galgame的定义难以判断,但我却误打误撞接触了Galgame这类游戏。最先是《美少女万华镜2》,当时记得是加了很多群、下载的安卓直装版,最先只是想看HCG快速跳过,后来看到雫的坟墓的那段情节感觉不太正常…这也为以后第二遍玩万华镜2做了铺垫吧。期间我还发现一个叫“极点ACG”的网站,算是我Gal入坑小站了,从里面下了很多各类各样的游戏,印象比较深的是《巧克力与香子兰》、《与空狐的日常生活》。最先我玩游戏只是为了看HCG,没怎么注重剧情,后来有一天在Q群看到友利奈绪开发的亚托莉机器人,好奇去搜了一下亚托莉,在百度上看到了游戏介绍,觉得不错于是下载了一份进行游玩,可以说对当时刚入坑的我冲击力还是很大的,也正是《亚托莉:我挚爱的时光》这款游戏,标志着我从只看H的阶段、转入了注重剧情、氛围的阶段。接下来就是22 ...
节流与防抖:前端性能优化的利器在前端开发中,我们经常会遇到需要处理高频触发事件的情况,比如窗口滚动、页面缩放、输入框内容变化等。如果不加以限制,这些事件的处理函数可能会被频繁调用,导致性能问题。节流和防抖是两种常用的优化技术,能够有效减少函数的执行次数,提高程序的性能。
一、节流(Throttle)概念节流是指在一定的时间间隔内,函数只被调用一次。如果在这个时间间隔内触发了多次事件,只有第一次会调用函数,其余的会被忽略,直到时间间隔过去,重新开始计时。
实现原理节流的实现思路是:每次事件被触发时,如果函数没有在指定的时间间隔内被调用过,则调用函数并设置一个计时器,在指定的时间间隔内不再触发事件。如果在指定的时间间隔内再次触发了事件,则不调用函数,直到指定的时间间隔过去,重新开始调用函数。
实现代码12345678910111213function throttle(fn, delay) { let timer = null; return function() { const context = this; const args = argument ...
近些天来没更新博客,关于学习笔记,我觉得借用别人写好的要比自己手写效率高。拿记笔记的时间做项目、学习新知识要更高效。最近主要在学习前端知识,Unity也有在学但目前主要在学前端。Unity的话目前我算是入门阶段,感觉调整动画、调试要比写代码费劲得多O_o,现在学Unity总是把时间放在做项目、学习新思想上(比如有限状态机、行为树),效率总感觉太低了,于是我把主要时间放在学前端上了。大二时打算深入计算机四大件和后端开发,等我把数据结构与算法学好,感觉对Unity学习是一个巨大的提升吧,目前阶段就先入门、慢慢学点。前端的话说来惭愧,我从23年就开始学前端但学一半放弃了,现在又重新拾起,目前把Html、CSS和JavaScript、Ajax学完了,下一步打算学习Node.js,然后学习Vue框架,这样大概就算入门了,参考好多学习路线、慢慢按照自己的计划学。目前打算大一先把前端和Unity学一学,在大二上深入学习计算机四大件,重点放在数据结构与算法,正好配合前端和Unity知识,同时大二时学习后端知识,最后找一门方向精通精进。
今天打开论坛“理理的茶馆”时,发现网站是可以自定义css美化的,正好我在学前端,想检验一下成果。于是试着美化论坛。
Flarum结构分析首先Flarum论坛有很多写好的自定义的类名之类的,自定义前需要搞清这些。
Hero模块1.Hero-title——头图上的标题文字,我的网站是“理理の茶馆”
今天我在写Unity有限状态机时,出现一个bug,我把OnEnter方法注册到MonoManager的AddStart方法,切换状态时会移除掉原来的OnStart方法,增加一个新的OnStart方法。结果OnEnter方法迟迟不执行。解决方法也很简单,每次AddStart时要调用一下OnStart函数,因为OnStart方法写在Start里,脚本执行时只会调用一次,我们再往里AddStart它是默认不会调用的,所以我们手动调用一下就行了。
去年我用B站收益,花200多买了个vivo z3i手机,运存6GB空间128GB,想着闲置也是闲置,能拿来发挥用处就好了。拿来干什么呢,搭建Alist?感觉太浪费了;做网站?没有这个需求;做NAS?感觉不合适;最后突发奇想,用来装一个linux系统,一方面练习、另一方面也能搭建很多服务用。
安装linux系统。首先我上网找了一些教程,最后发现一款叫“虚拟电脑app”的软件很好用,是由其他大佬打包好的软件,下载后点开无需操作即可自动安装Ubuntu系统。
登录root账户打开我们的旧手机——开始使用——远程控制——通过webTTY。开启我们的远程连接。会返回给你一串链接,我们直接在另一台设备的浏览器里打开。输入sudo -i,然后要填密码,看@符号前面的字符,那就是你的密码。输密码时是不会显示密码的,所以不要以为自己没输上。最后出现root@xxxx说明你已经登录root账户了。
创建文件夹分别执行mkdir /home/bilibili/ffmpg和mkdir /home/bilibili/video,创建两个文件夹,再执行`cd /home/bilibi ...
最近一方面在学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,记录下我们所有要执 ...