- 博客(16)
- 收藏
- 关注
原创 Unity的脚本运行顺序
前情提要--我的小项目碰到一个问题,需要在玩家进入场景的时候让对象B和C获取到A这个对象并且让A这个对象取消激活。我想当然的就在B、C脚本的start方法里写了:refA = GameObject.Find("A");并且在A的start方法里写了:gameObject.SetActive(false);然鹅问题就出在这里!!!Unity脚本运行顺序unity加载场景的时候调用脚本是有一定顺序的,有可能我A的start先执行了那这时候A就取消激活了,B和C的sta
2021-10-24 16:19:11
4073
原创 Unity2d开发 - 对象池(Object Pool)
我们知道,在unity中生成和销毁一个游戏的gameobject对象是要消耗一定的资源的,频繁的生成和销毁对象内存会有很大的压力,
2021-10-21 13:23:34
1895
原创 游戏设计模式-单例模式
定义:单例模式,是指整个程序的生命周期中只会同时存在一个该类的实例化对象,并且会提供一个全局静态方法来访问这个对象。单例的用处:举个例子,在游戏开发中常常只有一个player的对象,每当你要在某个类或者函数里面要获取player对象的某个属性来进行数值操作时,你都要记录player的对象再把对象的值获取过来。这样常常很容易出现一些bug,例如重复的实例化对象,获取到的数值不对劲等等。如果使用单例模式,整个程序周期中只有一个该类对象,在调用时单例模式判断是否有对象并返回对象/创建对象返回。并且
2021-10-14 19:32:24
660
原创 Unity2d开发 - 浮动文本
今天又开新坑了,最近数据结构学腻歪了回到之前在做的一个unity的2d项目上继续完成功能。今天做的是玩家吃到金币能够有浮动显示的动画效果:要完成这个效果,首先要创建一个空物体命名为FloatMoney并加上TextMesh组件,输入一小段数字并设置完字体大小等表示效果。只有text只是不会动的一个数字文本显示,现在做个帧动画:创建一个动画和动画控制器,在连线的地方吧动画拉进去,并设置为初始值。录制动画:每过一帧就设置文字的位置稍微上移以及大小的浮动变化,这样看起来会自然.
2021-10-12 23:16:09
1151
原创 数据结构算法 - 常用排序算法小结
先一张图整体说明下:关于算法选择明显,单纯要快的时候正常是使用快排来排序。在 对空间和速度都有一定要求的时候可以使用堆排序。在解决实际问题需要排序稳定的时候可以使用归并排序。算法在为了获取更低时间复杂度上要牺牲一定的空间,在为了获得更低的空间复杂度上会牺牲一定的时间,而两者都要的时候就很难做到稳定。因此,算法的选择不是一定的,都是根据题目来选择适合这道题目的算法。或者是通过算法的结合,在大数据部分使用一定算法,当数据在一定量时使用另一个算法。...
2021-10-08 17:49:04
82
原创 二叉树 - 判断类型(二)
一、满二叉树(FT - Full Tree)用树的DP来判断。对节点统计他左子树、右子树的总数和左右子树的层数。根据节点数 = pow(2,层数) - 1;来计算 static bool isFullTree(Node head) { if(head == null) { return true; } Info data = Process2(head); return data.nod.
2021-10-06 23:34:07
147
原创 二叉树-判断树类型(一)
一、二叉搜索树(BST - Binary Search Tree)用中序遍历很容易实现,只要用中序遍历的过程是单调升序就代表是二叉搜索树非递归://判断是否为二叉搜索树(binary search tree) //中序遍历 static bool checkBST1(Node head) { if (head == null) return true; Stack<Node> stack
2021-10-05 22:36:44
570
原创 二叉树-计算最长宽度
通过用队列完成二叉树的层次遍历,来计算最长宽度。实现:用一个字典/hash表来存二叉树中每个节点所在的层数,然后根据所在层数统计该层的节点个数,再比对每层的宽度大小来确定最长宽度。代码: static int MaxWidth(Node head) { if(head == null) { return 0; } //队列存二叉树的顺序遍历
2021-10-04 22:17:36
95
原创 二叉树-递归/非递归遍历
二叉树的遍历有先序、中序、后序遍历三种方式。先:头左右。中:左头右。后:左右头一、递归遍历1)先序遍历 static void PreOrderRecur(Node head) { if(head == null) { return; } Console.WriteLine("Node:"+head.value); PreOrderRecur(head.left);
2021-10-03 22:44:56
87
原创 链表-判断相交
链表相交今天是链表的比较难的一个算法,判断两个链表第一个相交的位置在哪,如果有相交返回相交的那个节点;如果没有相交则返回空。首先,我们要把判断分成几个情况。一、有环和无环显然,有环和无环两种情况,对链表判断相交与否肯定有影响。如果有环就返回环的入口,如果没环就返空。那么我们要先判断两个链表是否有环。要判断有环和无环我们依旧可以使用快慢指针。让快指针和慢指针一起走,如果快指针能走到null,那么显然没有环,如果快指针和慢指针最终相遇了。复杂的算法证明:当慢指针走到环的入口是,慢指针走了
2021-10-02 23:57:13
334
原创 链表-判断回文
记录一下适用于不同情况的解法笔试-简单的算法(简单快就行 不要那么注意空间)解决方法1---直接用栈存把链表存到栈里面,然后同时比较链表和栈弹出来的数,存在不同的就返回false,走到最后就返回true代码: static bool IsPlalindrome1(Node head) { Stack<Node> stack = new Stack<Node>();
2021-10-02 00:02:40
93
原创 链表-快慢指针
链表题能用到快慢指针的一般是两种题目:yi/一、判断链表是否存在环结构要判断是否存在环结构,那么我们就定义一个组快慢指针,让快指针一次动两步而慢指针一次动一步。如果在两个指针动的过程中,快指针指向了null,那么就表示这个链表没有环。如果两个指针在某一时刻是相等的,那么则表示该链表存在环结构。代码实现如下: static bool HasCycle(Node head) { if(head == null || head.next ==
2021-09-30 23:34:39
156
原创 桶排序-(BucketSort)
所谓桶排序:是先创造一个长度为10的count数组,来存放数组元素。首先,计算出数组最大数的最高位的位数记作Digit。从个位也就是右数第一位开始,把数组从左往右依次遍历。根据右数第一位的数字把元素放在不同的桶里。int[] a = new int[] {13,24, 16, 29, 16, 50, 20, 53, 32, 71};上面这个数组在digit = 1的情况则是把元素依次放在3,4,6,9,6,0,0,3,2,1号桶中,并让那个桶的count[桶号]++,放入桶的操作实际上就是.
2021-09-29 22:50:22
204
原创 数据结构与算法-快排和堆排
一、快排(QuickSort)原始的快排是通过在数组中进行一次Partition操作:取最后一个数作为基准,将小于等于这个基准的数放在数组的左边,大于这个基准的放在右边。如:int[] a= new int {2,5,6,1,3}怎么操作 达到分类效果呢?定义两个变量less,more表示小于等于基准数区间的右边界,大于基准数的区间的左边界。初始化时 让less指向要Partition的数组的最左端-1表示还没有小于等与基准值的数。让more 指向要Partition的数组的最右端...
2021-09-29 00:09:58
270
原创 数据结构与算法 - 归并排序
归并排序(Merge-Sort)归并排序是以分而治之的思想,将数据分开、分别比较两边的值,并用一个辅助的数组去存储比较后的结果。代码是用递归来实现,将一段数组切分为两段,再对两段进行Merge操作。class Test{ static void Main(string[] args) { int[] a = new int[] { 3, 2, 1, 5, 4, 2 }; Sort(a, 0, a.Length - 1); fore
2021-09-27 23:14:20
121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人