【Unity】Unity中常见的四种存读档方法
Unity中常见的四种存读方式简述本文就Unity常见的四种存读数据的方式进行总结和分析,分别是:PlayerPrefs,二进制序列化,JSON,XML 四种方式这里个人比较喜欢PlayerPrefs和JSON,因为对于我们目前的开发情况而言,它们是最方便且实用的下面先在开篇小结一下四种方式的特点,想看详情的话可以跳过这一部分,直接到 四种情况的实现与分析
PlayerPrefs通过键值对进行存读是一种特殊的Caching System 缓存系统,它可以在不同的场景之间,有效地保存一些简单的设置和变量比如说音乐、音效的开关等等,简单的设置。其实它的名字就很明了:它更适合保存一些选项设置与简单的变量
prefs 就是 preferences 的简称啊,“玩家首选项”已经很明显的表明了它是用来干什么的
比如游戏选项的设置、图片、事关用户核心的简单的变量等等如果你只是想保存玩家生命值,分数等的、简单记录的数值,它也可以胜任。如果你想进一步保存怪物状态,物品,成就系统什么的,建议还是看下面的内容
二进制序列化代码量少二进制的可读性很差不过…这也使作弊者直接修改存档变得困 ...
【算法】滑动窗口及其例题
滑动窗口简而言之,滑动窗口算法在一个特定大小的字符串或数组上进行操作,而不在整个字符串和数组上操作这样就降低了问题的复杂度,从而也达到降低了循环的嵌套深度其实这里就可以看出来滑动窗口主要应用在数组和字符串上
简介滑动窗口常常用于解决下面这些问题:可以用来解决一些查找满足一定条件的连续区间的性质(长度等)的问题。由于区间连续,因此当区间发生变化时,可以通过旧有的计算结果对搜索空间进行剪枝这样便减少了重复计算,降低了时间复杂度
也就是说,对于“ 请找到满足 xx 的最 x 的区间(子串、子数组)的 xx ”这类问题,我们就用它
大体框架滑动: 说明这个窗口是移动的,也就是移动是按照一定方向来的。
窗口: 窗口大小并不是固定的,可以不断扩容直到满足一定的条件;也可以不断缩小,直到找到一个满足条件的最小窗口;当然也可以是固定大小
1.我们在字符串 S 中使用双指针中的左右指针技巧,初始化 left = right = 0,把索引闭区间 [left, right] 称为一个「窗口」。
2.我们先不断地增加 right 指针扩大窗口 [left, righ ...
解决Unity的代码补全问题
写在前面如果你还没有安装编辑器/初次使用Unity,请按照下面的步骤配置。正常情况下可以直接得到最完整的编辑器配置啊角度来说就一句话在使用UnityHub安装的时候,勾选Visual Studio Community这样UnityHub就会一步到位帮你配置好了
如果你和笔者是一样的Vsc党,或者原本是使用的是Visual Studio Code而不想重装,则继续看下文
针对Visual Studio Code 的配置方案最无脑的办法:先用UnityHub安装VS,它会给你配好环境然后下载VSC,并在UnityEditor里面把默认编辑器设置为VSC就好了hhh(二五仔行为)
微软自己的官方指南配置VSC 微软官方指南 :https://code.visualstudio.com/docs/other/unity或者推荐麦扣老师的教程 https://www.bilibili.com/video/BV19741167zU文字版: https://www.bilibili.com/read/cv9764864?spm_id_from=333.999.0.0
还是不能补全/ ...
《啊哈!算法》总结与概况(三)
第三章枚举
枚举,暴力的一种算法,典型利用”计算机算力大大高于人力”这件事的做法枚举,顾名思义:有序的尝试每一种可能在书里,枚举被单独列为一章,不过每一节都是各种花式实战因此我只想用一个MD笔记来记录它
鬼畜奥数题我们现在有一道奥数题,要求使用1-9九个数字填入下方的等式:[][][]+[][][]=[][][]注意:每个数字只能用一次请问一共有多少种组合
123456789101112131415161718192021222324252627282930313233343536373839404142#include <stdio.h>int main(){ int a,b,c,d,e,f,g,h,i = 0 ; //九个数字 int total = 0 ; //计数 //下面开始整活 for(a=1;a<=9;a++) for(b=1;b<=9;b++) for(c=1;c<=9;c++) //第一个数的百位a,十位b,个位c ...
《啊哈!算法》总结与概况(一)
第一章桶排序(简版)这是一种对于n个数据排序的方式
这个算法是假设了有n个桶,编号便是0-*(n-1),共n个桶来装数据每当出现了一个数,我们就在对应编号的桶中放置一个标志查看数据时只要看每个桶中有多少数据即可
//比如我们对0-10的数进行排序
12345678910111213141516171819int a[11] ;int i,j,t ; for(i = 10 ; i >= 0 ; i++){ a[i] = 0 ; //讲每个桶的原始值设为0}for(i =1 ; i <=5 ; i++){ //循环读入数据,我们这里就设读入五个吧 scanf("%d" , &t); a[t]++ ; //相关计数}for(i = 10 ; i >= 0 ; i++){ //依次判断a[0]到a[10] for(j =1 ; j<=a[i];j++){ printf("d",i) ; //打印 ...
《啊哈!算法》总结与概况(二)
第二章队列队列是一种特殊的线性结构,它只允许在队列的首部head进行删除,以及在尾部tail进行插入这两种操作分别被称为“出队”和“入队”。而当队列中没有元素即head=tail时,称其为“空队列”
我们现在可以将队列的三个基本元素(一个数组,两个变量)封装为一个结构体类型
12345678struct queue{ int data[100] ; //存储内容的主体 int head ; //队首 int tail ; //队尾};//——————————————————————————struct queuq q;//定义结构体变量,和其它数据类型一样
上面定义了以一个结构体类型,我们通常把它放在main外面,其定义末尾有一个;其中,strcut是结构体的关键字,queue是我们为这个结构体起的名字这个结构体有三个成员:整型数组data,整型head,tail。这样以来,我们就可以把它们当作一个整体来看待访问结构体内的内部成员使用点(.)
下面这段代码就是我们用结构体实现队列操作的实例
##代码示例
1234567891011 ...
《啊哈!算法》总结与概况(六)
第六章Floyd-Warshall算法只有五行核心的算法
简介假设我们有四个点。每个点之间都有一定的距离,或者甚至没有路现在我们想要知道如何获得两点之间的最短路径使用之前说的深度优先或者宽度优先当然是可以的,不过有没有更好的办法?于是我们使用了Floyd-Warshall,先进了一些的算法
算法核心首先我们要知道,有的时候,通过n个点而从A->B,是有可能比直达得到更短的路径基于这个思路,我们逐步推进1.首先是直达,这个就不用说了2.然后我们假设“如果允许在点1中转”,得到新的结果比较,更新数据3.慢慢来,随后假设“如果允许在点1和点2中转”,再次更新数据4.遍历所有可能,得到最终结果
实现具体怎么实现呢,我们先做一波基础操作首先首先,我们同样用一个二维数组e来存储路径情况(其实就是图的信息)然后是比较,以顶点1为例,可以写成:
12345678910111213for(i=1;i<=n,i++){ for(j=1;j<=n;j++) { if(i[e][j] > e[1][j]+e[1][j])& ...
《啊哈!算法》总结与概况(五)
第五章图的简介与二维数组图就是由顶点和连接顶点的边组成的
表示图我们利用二维数组表示图二维数组的两个参数行列,均表示顶点,二者相交得到的即是距离我们用正无穷(一般可以用999999代替)表示二者之间没有边,0是某点到自身的距离比如e[a][b] = 3 ;就代表a到b的距离是3
图还分为有向图和无向图顾名思义,有向图是有方向属性的,无向图则没有换言之,对于无向图,我们有:
e[a][b] = e[b][a]
图的遍历我们上一章学习了深度优先算法和广度优先算法现在我们就利用它们来完成图的遍历我们还是以一个例子来说吧
例题假设我们在一个道路具有单向型的地方行走,我们想得到两点之间的路径和距离1->5 101->2 22->5 72->3 33->1 33->4 44->5 55->3 3现在,我们想要从1到达5的最短路径
12345678910111213141516171819202122232425262728293031323334353637383940414243444 ...
《啊哈!算法》总结与概况(四)
第四章(下)广度优先算法 Breadth First Search BFS深度优先算法的兄弟,包含另外一种搜索思维也叫宽度优先算法
概述与深度优先算法不同,广度优先算法注重于”对所有情况的分析搜索”如果是深度优先算法是刨根问底地分析每种情况,广度优先就是在在层层扩展中找到题解
例还是之前的问题,我们想在n*m的迷宫中找到起点到终点的最短路径
分析我们的核心思想是分析扩展时每发现一个点,就将这个点加入到队列中,直到到达终点另外,为防止一个点被多次走到,我们还要一个数组来记录一个点是否被走到
队列与搜索路径我们决定使用一个队列来模拟搜索过程,我们需要:1.两个参数x,y代表点坐标2.一个参数s代表我们走过的步数3.某一点之前的父,用于计算路径 (本题不需要计算路径,就省去这部分)
实现如下:
12345struct note { int x ; //横坐标 int y ; //纵坐标 int s ; //步数};
初始化我们设定相关数据完成队列,并且对各个条件进行初始化
12345678910111213141516s ...
适合新手的《我的第一本算法书》总结
总结这篇文章作为对《我的第一本算法书》的总结,该书阐述了基本的算法和理念。对于新手来说可以大致对算法及其应用有个概念,但是说不上可以让人真正学到算法纯纯的入门书籍,本文将该书的重点进行了整理和归类
数据结构概述[1.2 链表]链表是利用指针作的数据结构,添加与删除都很简单[1.3 数组]数组与链表相反,通过下标来访问,导致其与链表相比访问简单而增删困难[1.4 栈]只能从最新的部分存读数据,通过Push加入,通过Pop取出这种“先进后出”的结构被称为LIFO: Last In First Out在使用递归的时候,就会接触到这种思想[1.5 队列]队列和栈相反,秉承着FIFO的原则,即First In First Out最先进来的最先处理——————————————————————————————|[1.6 哈希表]配合“哈希函数”进行数据的处理。核心是利用函数进行处理,再利用键值对来进行存读存:利用哈希值与数组长度取余,得到该数据对应的位置。如果遇到冲突,则把后来的数据通过链表添加到前者之后读:得到想要查询的数据的哈希值,然后进行mod(取余)运算,让我们知道它在哪个“箱子”中 ...