++2021++年不知不觉就过去了,不知道为什么,我感觉时间过得越来越快了🙂.
!!回首过去的一年里,我好像也没做什么事情!!
前言
我向来觉得对自己的生活进行阶段性记录是很有必要的,通过这种方式可以记录下很多东西,在迷茫时看看从前的自己说不定能获得什么能量吧~
关于自设框架
数值系统
引入了数据修改器的概念,所以对于游戏的各种数据都需要分门别类的管理,特别是针对于Character的数据。
任务系统
buff系统
关于Buff系统在我的自制框架中,制作了一版实时的,在开发回合制卡牌游戏原型时,发现回合制的Buff和实时的Buff有较大差别,重新设计了一版回合制的,考虑在之后放入到自制框架中。
关于我开始成为Up主
在Bilibili投稿成为偶像?哈
兴趣点
大概是想要获得一些成就感来鼓励自己单调的生活吧,我开始发布一些编程相关的教程和知识分享,教别人的学习效率大概是自学的2倍吧❤️,同时也希望能够记录自己的成长。
视频收益
哈哈哈,在制作视频的时候我是没想过能够在经济上有什么获得的,但现在b站的投稿大环境还是挺好的,各种各样的活动和推广。
在精心制作一天之后,我发出了 ...
游戏项目
未读
现在是 2022年12月29日 16:22:06 没想到拖了整整一年才捡起这件事。
回顾整个项目,虽然完成了很多通用的模块,但这些模型也仅仅只是demo级别,尚还缺乏验证,且游戏设计思想仍然不够完整,对于游戏地图的设计也缺乏确定的解决方案。
自定义特性可以用来标记一些类或类成员
123456789101112131415161718192021222324252627282930313233343536373839404142using System;using UnityEngine;namespace Test{ [Author("Fasty")] public class Test: MonoBehaviour { private void Start() { Show(typeof(Test)); } //用反射获取自定义特性 public void Show(Type t) { var attr = Attribute.GetCustomAttributes(t); foreach (var attribute in attr) { ...
本文用于记录一些使用Shader实现的基础性效果
Unity2020.3.8f1
基础设置
创建一个空Shader,可以设置Graph以满足需要。
顶点着色器
法线外扩
可以改变一个模型的大小
其中获取法线方向也可以使用:
通过将法线位置(物体本地位置)归一化得到法线,然后乘以一个数值来实现。
模型裁切
原理:AlphaClip的值如果比Alpha的值大,则会不显示
简单效果预览:
加强版本
效果预览
Remap 重映射
根据输入In在InMinMax中的插值,计算输出。(按照比例位置输出)
比如输入In为0,InMinMax时(-10,10),那么In在InMinMax的
位置就是0.5,如果OutMinMax为(0,10),那么输出Out就是5
公式为: Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y -
InMinMax.x)
One Minus 1减去
输出1-in
Step 阶梯
输入in大于等于 Edge取 1,否则取0
...
最常使用到的就是矢量和矩阵(数学的分支之一——线性代数)
笛卡尔坐标系
大部分的计算位置、距离和角度等变量都是在笛卡尔坐标系下进行的。
二维笛卡尔坐标系
一个特殊的位置,原点,它是整个坐标系的中心
两条过原点相互垂直的矢量,x轴和y轴。
不同的渲染方式,坐标系不同
三维笛卡尔坐标系
三个坐标轴相互垂直,长度为1,这样的基矢量被称为标准正交基
这三个坐标轴被称为是基矢量
左手坐标系和右手坐标系
在二维笛卡尔坐标系中,我们可以通过旋转将任何的坐标系重合,也就是说所有的二维笛卡尔坐标系都是等价的。
但对于三维坐标系,有时不能靠这种旋转来使2个不同朝向的坐标系重合。
左手坐标系
右手坐标系
Unity的坐标系
在模型空间和世界空间中,使用左手坐标系
观察空间,使用右手坐标系,z轴坐标的减少意味着场景深度的增加
练习
右手坐标系
点和矢量
矩阵
矩阵变换
坐标空间
法线变换
第三章 UnityShader基础
正式进入shader学习了,好耶!
使用UnityShader的流程:
创建一个材质
创建一个UnityShader,为材质添加
把材质赋给对象
调整shader属性
创建Shader
Unity包含了多种shader模板供我们使用。
Standard Surface Shader
标准光照模型
Unlit Shader
不包含光照(但包含雾效)
mage Effect Shader
实现各种屏幕后处理效果
Unity Shader的导入面板还可以方便地查看其使用的渲染队列(Render queue)、是否关闭批处理(Disablebatching)、属性列表(Properties)等信息。
ShaderLab
ShaderLab是Unity为我们抽象的一种shader语言,可以更方便的通用。
基本结构
123456789101112131415Shader "ShaderName"{ Properties{ //属性 Name(&qu ...
写在前面
单例模式在Unity中是一种非常常用的方式,和传统单例不同,在Unity中针对不同的情况可分为以下几种方式❤️ 。
普通单例
适用于普通的Mono类。
123456789101112131415161718192021222324namespace singleton{ /// <summary> /// 单例 /// </summary> /// <typeparam name="T"></typeparam> public abstract class Singleton<T> where T : new() { private static T _instance; public static T Instance { get { if (_instance!=null) ...
在之前Unity想要实现延迟执行或者是等待,要么只能使用自己计数的方法,要么使用协程。
Ep.1 协程
首先让我们来看一个协程示例:
示例是循环10次,每次等待0.2s。
协程示例1234567891011IEnumerator Func(){ for (int i = 0; i < 10; i++) { print(i); yield return new WaitForSeconds(0.2f); }}//启动协程StartCoroutine(Func());
Ep.2 Async 异步
Async异步的概念是微软基于多线程提出的Task解决方案,相比传统多线程具有很多优势。
❤️相比协程来说,异步的方式不需要搭建基础的协程框架(不需要新创建一个方法),可以直接在方法中使用关键字实现等待。
不需要启动
Async示例12345678async void AsyncFunc(){ for (int i = 0; i < 10; i++) { ...









