基础学习
未读枚举算法
打印结果:
递归算法static void Main(string[] args){ //递归 Console.WriteLine("请输入阶乘数(小于17):"); int i = int.Parse(Console.ReadLine()); Console.WriteLine(Mul(i)); Console.ReadKey();}public static int Mul(int i){ if (i <= 1) { return 1; } else { return Mul(i - 1) * i; }}
打印结果:
递推算法有一只大兔子,一个月生一只小兔子,过一个月小兔子变大兔子。以此求第几个月,有几个大兔子。
namespace AlgorithmTest{ class Program { static void Main(string[] args) { //费波拉契数列,一个数等于前两个数之和。 //根据输入数,展示到这个数之前的所有数。 Console.WriteLine("请输入一个0~21之间的数"); int i = int.Parse(Console.ReadLine()); int[] array = new int[20];//定义有20个空的数组 array[0] = 1; array[1] = 1; if (i == 1) { Console.Writ ...
最近打算恶补数据结构,在学校的时候对数据结构与算法一直是一知半解,懵懵懂懂的样子。特开此贴记录一下过程,希望能有所收获。打算看过c#基本的数据结构之后,各种类型算法题多刷刷。
算法与数据结构的关系
数据结构可以认为是数据在程序中的存储结构,和基本数据操作
算法可以认为是用来解决问题的方法,算法基于数据结构
数据结构是问题的核心,是算法的基础
算法(Algorithm)的评价标准
运行时间(Running Time)
占用空间(Storage Space)
有时需要牺牲空间换取时间,有时需要牺牲时间来换取空间
其他方面:正确性(Correctness)、可读性(Readability)、健壮性(Robustness)
数据结构
Cinemachine Camera转载自知乎用户:Ouroboros
文章地址:https://zhuanlan.zhihu.com/p/516625841
本篇节选了body部分
在阅读以下文章之前先了解以下概念
Pitch Axis:俯仰轴
Roll Axis:翻转轴
Yaw Axis:航向轴
这三个轴与x,y,z坐标轴不同概念
Body
打开Body组件界面有7种算法
以下图片出现黄色感叹号是因为Follow没有挂载跟随目标
Do nothing
选择该算法后,该虚拟相机的坐标不会移动更新,通常为静态镜头选择此算法或使用自定义脚本直接为相机位置设置动画。通常和LookAt配合使用,模拟固定位置的跟随镜头。
3rd Person Follow选择该算法后虚拟相机会自动跟随任务移动,就是常见的第三人称视角
变量
含义
Damping
阻尼系数,指摄像机向x,y,z轴三个方向移动反应速度,系数越小反应越快,系数越大反应越慢,可以通过调整三个不同方向轴的阻尼系数来实现不同的移动效果。
Shoulder Offset
相对于跟随目标原点的肩膀支点的位置。这个偏 ...
仅做记录
vscode需要的插件如下:
Auto-Using for C#,自动添加引用
Unity Code Snippets,unity代码补全
c#,必备
C# XML Documentation Comments,三下///实现xm注释l
Code Runner,运行代码
GitHub Theme;eppz! (C# theme for Unity);Gruvbox Theme;(三款编辑器皮肤
期间会提示安装.net framework,sdk包。
vscode字体设置:“editor.fontFamily”: “Fira Code Medium, ‘Courier New’, monospace”
unity中打开edit->Preferences->External Tools,选中vscode,记得勾选下面前两行。
Csharp
未读C#中? 、?? 、?. 、??= 的用法和说明(转载)一、可空类型修饰符< ? >引用类型能用空引用来表示一个表示一个不存在的值,但是值类型不能。例如:
string str = null;int i = null;//编译报错
为了使值类型也能使用可空类型,就可以用 “ ? “来表示,表现形式为”T?”。例如:
int i? //表示可空的整型DateTime time? //表示可空的时间
二、空合并运算符< ?? >用于定义引用类型和可空类型的默认值。如果此运算符的左操作数不为Null,则此操作符将返回左操作数,否则返回右操作数。
var c = a??b //当a不为null时返回a,为null时返回b
三、< ?. >不为null时执行后面的操作。例如:
Person.Name?.Person.Code Person.Name = Person == null ? null : Person.Code //两段代码等效
四、< ??= >C# 8.0 引入了 null 合并赋值运算符 ??= ...
unity
未读ready动画结束后游戏开始,开始计时,直到死亡或者胜利再暂停计时。
新建ClearTime脚本用来更新时间文本,开始动画过后再计时
public class ClearTime : MonoBehaviour{ [SerializeField] Text timeText; [SerializeField] VoidEventChannel levelStartedEventChannel;//开始游戏 [SerializeField] VoidEventChannel levelClearedEventChannel;//玩家过关 [SerializeField] StringEventChannel cleardTimeTextEventChannel;//带string参数的频道 [SerializeField] VoidEventChannel playerDefeatedEventChannel;//玩家失败 float clearTime;//时间 bool stop = true;//计时停止 private void OnEnable() ...
unity
未读说明:为角色胜利镜头做特殊定制
follow属性用玩家对象
Animated Target:动画目标属性,拖入角色.
原有的相机拖入状态驱动虚拟相机下
复制一个相机改名为Zoom In,意为镜头放大的虚拟相机.
将镜头垂直视野值36改为24
回到状态驱动虚拟相机对象,在这可选玩家不同状态对应使用不同的相机,还可以设置延迟1.2秒切换
unity
未读过关功能实现说明:过关时开启ui,切换状态为vitory,落地后再播放动画。
VictoryScreen中增加代码:订阅按钮功能,唤出鼠标指针。
using UnityEngine;using UnityEngine.UI;public class VictoryScreen : MonoBehaviour{ [SerializeField] VoidEventChannel levelClearedEventChannel;//获取事件频道 [SerializeField] Button nextLevelButton; private void OnEnable() { levelClearedEventChannel.AddListener(ShowUI); nextLevelButton.onClick.AddListener(SceneLoader.LoadNextScene);//订阅下一关按钮功能 } private void OnDisable() { levelClearedEventChanne ...


