unity常用算法,设计模式

1.冒泡排序:

依次比较两个相邻的元素,如果前一个元素大于后一个元素,则交换,直到最后一个元素为最大值,然后重复相同的动作,直到倒数第二个元素为第二大,依次类推。
时间复杂度是O(n2)稳定性最好,但是耗时多

稳定性:保证排序前两个相等的数在序列的前后位置在排序后前后顺序还是相同的。

--lua实现:
function sort1(arr)
	for i=1,#arr do
		for j=1,#arr-i do
			if(arr[j]>arr[j+1]) then
				arr[j],arr[j+1]=arr[j+1],arr[j]
			end
		end
	end
end

2.选择排序:

第一次总待排序的数据元素中选出最小的一个元素(或者最大元素),与数列起始处的元素交换位置,放在数列的起始位置,然后从剩余未排序元素中寻找到最小元素,放到已排序元素的后面,以此类推,直到全部待排序的数据元素个数为0。
时间复杂度是 O(n2) ,稳定性不好,优点是不占用额外内存空间。

function slect_sort(arr)
	for i=1,#arr do
		local minIndex=i
		for j=i,#arr do
			if(arr[minIndex]>arr[j]) then
				minIndex=j
			end
		end
		arr[minIndex],arr[i]=arr[i],arr[minIndex]
	end
end

3.快速排序:

使用分治法
任意选择一个元素,依次将剩余元素中小于基准元素的值放在其左侧,大于该基准元素的放置在其右侧,然后取基准元素前半段和后半段分别进行同样的处理,以此类推,直至各序列剩余一个元素时,即完成排序。
时间复杂度(平均):O(NlogN)

在这里插入代码片

4.a*算法:

将地图划分为多个方块来表示搜索空间,建立两个列表,一个open列表,一个closed列表,open表示要搜索的方块,close表示不考虑的方块,把地图上不能通行的块也添加到close列表里,首先把人物所在的位置放在closed列表里,然后把和人物所在位置相邻的方块添加到open列表里,给每个方块一个g值和h值,g是从开始点到当前方块的移动量,h是当前方块到目标点的的移动估算量,这个值为估算值,不算障碍物的最短距离。g加h为当前方块的和值f。
1.将方块s添加到open列表里,该列表有最小的和值。
2.将方块从open移除,添加到closed列表里。
3.对于与s相邻的每一块可通行的方块t:
如果在closed列表里,不管
如果不在open列表里,添加它然后计算它的和值。将当前节点设置为其父节点。
如果已经在Open列表里,当使用当前路径到达那里,检查f和值是否更小,如果是,更新它的和值和前继。
4.如此循环,不断从open队列中寻找最小的点作为当前节点,并加入周围节点,不断更新邻近域的g和h值,看能不能比原来的g值更小,如果小就更新,否则不更新,当前节点算完就放入close队列,再从open队列中寻找最小的点……
5.直到把终点加入open队列中。
6.最后路径就是从终点开始,沿着父指针不断回溯,回到起始点,这个路径就是最短路径。


设计模式:


1. 单例模式

保证一个类仅有一个实例,并提供一个全局访问点
如果为空则创建对象,

3. 观察者模式

它将对象与对象之间创建一种依赖关系,当其中一个对象发生变化时,它会将这个变化通知给与其创建关系的对象中,实现自动化的通知更新。

在游戏开发中,比如UI上有一个下拉的List,我选择了其中的每一项,都会导致UI界面的变化,比如我选择“强化”,对应出现强化装备的界面;我选择“镶嵌”,就会出现镶嵌的界面。

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity是一款非常流行的游戏开发引擎,它提供了许多常用设计模式,以帮助开发者更好地组织和管理游戏代码。下面是Unity常用的几种设计模式: 1. 单例模式:Unity中的许多管理类或者工具类通常只需要一个实例,使用单例模式可以确保只有一个实例被创建,并且全局可访问。 2. 观察者模式:游戏中有很多时候需要监听某些事件的发生,并根据事件触发相应的操作。观察者模式可以实现一个事件的发布和订阅机制,方便不同组件之间进行通信。 3. 工厂模式:在游戏中,有时候需要根据不同的条件来创建不同的对象。使用工厂模式可以将对象的创建从具体类中解耦出来,使得代码更加可维护和扩展。 4. 策略模式:游戏中有很多时候需要根据不同的情况来执行不同的算法或者逻辑。使用策略模式可以将不同的算法封装成不同的策略类,然后在运行时根据需要动态选择不同的策略。 5. 组件模式:Unity中的游戏对象是由不同的组件组成的,每个组件负责不同的功能。使用组件模式可以将游戏对象设计成一个组件的集合,方便开发者对游戏对象进行组装和拆解。 以上是Unity常用的几种设计模式,它们可以帮助开发者更好地组织和管理代码,提高代码的可读性、可维护性和扩展性。实际开发中,根据具体的需求,我们可以灵活地选择和组合使用这些设计模式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧仙草奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值