一、简单讲述A*寻路算法原理
答:G = 从起点 A 移动到指定方格的移动代价,沿着到达该方格而生成的路径。
H = 从指定的方格移动到终点 B 的估算成本。
F = H+G
1、在A*算法中,大地图会被切分为各个全等正方形,每一个方格存储着三个信息:F、H、G三个值还有记录父类方格的位置信息。确定开始点后就将它加入到一个由方格组成的 openList中。
2、遍历查找openList中的方格的邻近方格,如果那些方格可以行走,也将其加入到openList中,同时计算F、H、G三个值并且将对他们发起搜索的初始方格设置为他们的父类方格,随后把openList中的方格放入closeList中,代表这些方格已经被搜索过,后续不再搜索。
3、在openList中选择F值最小的那一个方格继续执行第二步。
4、直到搜索到了终点或者全部搜索完毕后停止,如果可以达到终点,则从终点开始顺着终点方格的父类方格开始检索,获得所有的父类方格收入一个新的list中,将list倒转,即可获得最终寻路路线。A*
二、在Unity中什么是协同程序?如何启用协同程序?
答:协同程序简称协程,即在主程序运行时同时开启另一段逻辑处理,来协同当前程序的执行。换句话说,开启协同程序就是开启一个线程。与线程类似,每一个应用程序都对应一个进程,每一个进程都有一个主线程,但协程在主线程之中,因而使用了还是单线程,不能理解为多线程,应是主线程的一部分。常用于使用动画时同步代码,时间等待,资源加载,场景切换等等。协程使用yield return来中断程序,相当于把该函数后续代码挂起,但是每一帧都会对yield return的返回值条件进行检测。
在Unity中开启协程可以通过三种方法:
1.StartCoroutine(协程方法名());
2.StartCoroutine(“协程方法对应字符串”);
3.StartCoroutine(协程委托);
三、Unity中各个方法的生命周期
答:Awake ->OnEable-> Start -> FixedUpdate-> Update -> LateUpdate ->OnGUI ->Reset -> OnDisable ->OnDestroy
四、什么是单例模式?
答:保证整个系统中一个类只有一个对象的实例,实现这种功能的方式就叫单例模式。要求如下:
1. 构造私有:如果要保证一个类不能多次被实例化,那么我肯定要阻止对象被new 出来,所以需要把类的所有构造方法私有化。
2.以静态方法返回实例。因为外界就不能通过new来获得对象,所以我们要通过提供类的方法来让外界获取对象实例。
3.确保对象实例只有一个。只对类进行一次实例化,以后都直接获取第一次实例化的对象。
五、什么是工厂模式?
答:工厂模式(Factory Pattern)是 最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
六、什么是观察者模式?
答:当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。常见应用是各类UI显示中监听管理员中的数值变化来调整UI变化