最近在学习Unity程序框架,于是我来记录一下单例模式基类
单例模式基类是什么?就是通过写一个基类脚本、再用其他脚本继承基类脚本实现功能的一种方式,下面是一个简单的基类脚本:
123456789101112131415161718using System.Collections;using System.Collections.Generic;using UnityEngine;public class BassManager<T> where T:class,new(){ private static T instance; //注意这里我们没有私有化构造函数,其实是不必要的,你知道我们在用单例模式就不会new一个实例了。 public static T Instance { get { if(instance == null) instance = new T(); return instance; ...
现在写可能比较早——因为我现在学Unity还没什么大的成果,有一定成果再来写肯定更好。那么为什么现在写呢,一方面是我现在想要摸鱼写写东西(bushi),另一方面是希望能把我学Unity走的弯路分享出来,让大家都有借鉴意义。
踩坑记录
1.企图不学编程、直接做游戏。刚开始时有很多小伙伴听说Unity有第三方插件、可以不写代码直接使用Unity,于是C#也不学了、或者学了一点点就不学了。我只能说,学Unity是避免不了写代码的。
学Unity,需要学好C#知识点。包括不限于:方法、属性、委托和事件、泛型、一些数据结构(List、栈、队列、哈希表、字典)、多线程。学好C#不光是学怎么去敲代码,更重要的是一种“面向对象”的思想。所以C#是必须学的。
2.基础不牢、直接跟进案例去学习。我就是这样…我是看得唐老狮的课,最先把C#核心学完、就直接去学Unity了,结果看到泛型、委托和事件,一脸懵逼的我又回来学习C#进阶了。之后我又把Unity三部曲学完、跟着B站鬼鬼鬼ii的案例去学习,结果发现——代码我都看得懂、但不知道在干嘛。就像一个毫无经验的工人看建大楼,你会砌墙、抹水泥,但不知道要怎么建房子 ...
最近我想打造一个较为丝滑的Unity动作系统,最先我想上网找个案例、跟着案例的步骤来。结果找到的案例是siki学院的,吐槽siki的动作系统做得挺答辩的,我都知道用状态机、它都不用),滑步较为严重。后来又找到鬼鬼鬼ii的Unity课程,结果收费210…在诸多阻力下,我产生大胆想法:没人教、我自己写一个不是更好吗?
先从简单开始,我们先实现最基础的功能:待机、跑步、急停。我的思路是,把待机动画和跑步动画混合在一起。做成一个混合树。混合树有好多类型,我打算采取2D混合树,把待机、向前跑、向后跑、向左跑和向右跑五个动画融合起来,做成一个2D混合树,这样待机和跑步状态就切换比较自然。
那么如何实现急停呢?我有两个思路。
思路一:调用动画事件思路一是,我们将待机和跑步通过混合树混合在一起,在混合树合适位置加一个动画事件——动画播放到合适位置时调用事件,然后过渡到Run_Stop状态中。我觉得这种思路不太完善,因为“合适位置加一个动画事件”是比较难把握的,看起来可能会有突兀感,于是有了思路2。
思路二:用多个混合树思路二是创建两个混合树,混合树A是待机动画和跑步动画混合在一起,0是完全待机、1是 ...
这几天我在试图学习Unity里的动作系统,了解到“有限状态机”这个东西,之前一直有听说过,以前总感觉很高大上,花了一节水课的时间大概弄懂了,于是分享一下。
温馨提示:在开始阅读本文之前,请确保你了解C#语言中接口、继承、抽象类等相关知识点,否则可能会看不懂)。
什么是有限状态机?
对于玩家和怪物,总会存在几个状态:比如待机、跑步、攻击、巡逻...这些都可以称之为状态。我们在Unity开发中最常接触的有限状态机就是我们的Animator窗口——它就是一个有限状态机。
使用有限状态机,可以更方便我们去进行人物行为动作管理和逻辑管理,比如玩家处于待机状态,按下W键切换到跑步状态、跳跃时进入跳跃状态,我们把不同状态用状态机进行管理,就会好很多。
通用的有限状态机框架
在我观看数位、海内海外的博主的视频,发现他们都会采用同一套框架,逻辑、代码都是极其相似的,于是进行总结。
首先我们新建一个名为IState.cs:
12345678using UnityEngine;public interface IState{ public void Enter(); public v ...
学三个月C#和一个月Unity后,试图边学边开发游戏,首先要解决的便是摄像机。其实Unity是提供了名叫cinemamachine的插件的,功能强大,然而我不想用Unity提供的,想自己手写一个,于是写了一个。
123456789101112131415161718192021222324252627282930313233343536373839404142434445using Unity.VisualScripting;using UnityEngine;public class CameraController : MonoBehaviour{ public Transform Target; [Header("设置相机看角色头顶多高位置")] public float upLook; [Header("相机竖直方向限制")] public float mYvalue; [Header("鼠标旋转灵敏度")] public float sensitivityMouse ...
ACGN
未读《すみれ》是猫猫社十五周年纪念作,也是我最喜欢的作品之一。在我心中吧,这部作品和《Narcissu》不分上下,都是很喜欢的作品。只不过由于没有汉化、本作在国内偏冷门。大概概括一下本作的故事,男主健二上网时结识了三个女主角,然而每个女主角都有自己的心理问题,于是男主角在现实中一个个帮助她们化解。为什么喜欢这部作品呢,我觉得无论是男主、还是三位女主角,和我真得太像了。本作的心理描写、很大一部分描绘出了我曾经的心理活动,让人有种强烈的共鸣:这不就是我吗?
第一位女主角是初芝堇(初芝すみれ),如果要概括她的话,就是“缺爱型人格”吧,起初的小堇是非常内向的,在班里没有朋友,经常通过装睡逃避班级生活(和我现在装肚子痛不去开会一模一样),甚至连放学坐公交都要避开和同学坐一辆。这样的小堇,经常陷入孤独、自卑和自我怀疑中。直到一次意外:自己的妈妈和男主健二的爸爸结婚了,健二使小堇变得更乐观开朗了。
玩这条线时我是很有感触的,因为小堇和我真得太像了:和同学避开同一辆公交、通过装睡逃避生活、内向孤独和细腻的情感,加上那作品中小堇的内心独白,让我很是触动。生活中不缺乏孤独者、自卑者,然而很少有作品去讲述他们 ...
在进行学习时,我学了一堆api,经常容易搞混,具体怎么用经常混乱,于是记录一下,如何判断向量夹角。
>一,Vector3.dot(比较麻烦,一般不太推荐)
1float angle = Mathf.Acos(Vector3.Dot(transform.forward, target.position - transform.position)) * Mathf.Rad2Deg;
通过Vector3.dot,传入两个向量作为参数,会得到点乘结果,将点乘结果用反三角函数求出弧度值,再转化为角度值。
二,Vector3.Angle (最推荐)
1float angle = Vector3.Angle(transform.forward, (target.position - transform.position).normalized);
直接传入两个向量,自己判断角度值,挺推荐的。
三,Quaternion.Angle
1float angle = Quaternion.Angle(transform.rotation, target.rotation);
如果你有目标物体的旋转( ...
此帖子用于分享一些我搜集的Unity资源,有能力希望大家支持正版(都可以在Unity商店找到),但是太贵了,于是分享一些。另外国外有个网站,https://unityassets4free.com/,理论上能下载很多免费资源,但是这网站不让挂梯子下载(),想研究的同学可以试试。
这个是PBR Stage Equipment 1.4(约人民币220多块),是个舞台场景文件链接:https://pan.baidu.com/s/1MtxBJ8YWVzJyeP6Hkrkjqg?pwd=rora提取码:rora贴个123盘:https://www.123pan.com/s/RP16Vv-eHeW
MMD2UnityTool这个一般用于vmd转动画anim(相机用的多)MMD4Mecanim_Beta_20200105这个多用于pmx模型转fbx,做MMD比较常用Unity Assets Magica Cloth v1.12.13售价25美元,作用貌似是让模型衣服、头发飘动效果更真实。
破费0.78买的一套动作 (Girl GreatSword AnimSet)https://pan.bai ...
在24年7月份,我在学Unity时碰到了名为“四元数”的数学知识,把我难坏了:不是,这四个数分别是什么意思?于是11月的我,希望能穿越到7月份帮自己解答疑惑。
为什么要用四元数?
表示空间的东西,最常用的就是欧拉角了。它以xyz三轴的旋转来表示,生活中很常用。但是它有些问题:
一是“万向节死锁”。具体可以去b站找个视频去看,描述起来太抽象,简单说就是轴面在旋转后可能会重合,如x轴面与z轴面重合,这些特殊情况下可能会乱套。
而是“不唯一性”。这个好理解,比如绕y轴旋转360度和720度是一样的,这就使我们在表现一个状态时、欧拉角不具有唯一性。
四元数是什么?
这里不用纠结于复杂的数学定义(因为我也不会),只谈它是什么:它表示的是,立体几何绕空间任意轴旋转一定读书——任意轴,不一定是xyz轴了,这就很方便。它解决了以上两个问题,引入第四个参数w。
标准格式是(w,x,y,z),那么这四个参数分别是什么意思呢?
假设一个物体,绕向量(x,y,z)旋转a度,那么它的四元数是:(cos a/2,sin a/2 * x,sin a/2 * y,sin a/2 * z)。完结(我当时找好几天我都不知 ...
在论坛里,有网友发了个名为“网上冲浪经验分享”的帖子,受此启发我也总结一下(其实我的博客就是记录这些的)。我自己整理过几千个网址,包括动漫、学习、游戏下载、实用工具等等,一般都是我自己私用的(怕被人举报),不过这里感觉没什么问题(人少),于是压缩一份分享出来:蓝奏云,请不要把它在各QQ群、论坛转载。
实际上,看到这里、把上边的压缩包下载解压了,剩下的内容都不需要看了。但这样显得我太氵了,于是随便写写。
一切的开始——强大的搜索引擎
以前是百度搜索,可如今百度搜索,基本是把自己的信誉给弄没有了(一堆不相关的内容)。
我首推的搜索引擎是必应,原因很简单:广告少、准确率高、不用挂梯。其次是Yandex,不用翻墙、准确率高,还经常能搜出一些奇奇怪怪的东西。有能力的话,再推荐谷歌搜索(排到最后是因为它需要挂梯)。
导航网站
我开头发的压缩包,完全可以当成导航网站来用。不过要是说推荐的,我还是推荐我的友站“ACG喵导航”。
关于galgame资源的寻找
最推荐的是bilibili,因为哔站上有好多up主分享资源,门槛最低、最容易找、资源分布广泛。
我的友站“ACG喵导航”收录了好多galgame ...