《UnityAPI.NavMeshAgent导航网格代理》
版本 |
作者 |
参与者 |
完成日期 |
备注 |
UnityAPI_NavMeshAgent_V01_1.0 |
严立钻 |
|
2020.09.10 |
|
|
|
|
|
|
#《UnityAPI.NavMeshAgent导航网格代理》发布说明:
++++“UnityAPI.NavMeshAgent导航网格代理”是对UnityAPI中NavMeshAgent导航网格代理类的剖析和拓展;
立钻哥哥:Unity是一个入门快、提高难的游戏引擎,想要提升能力,至少需要越过3道坎:API+Shader+综合能力;++1、API的积累:对API的合理利用不仅可以减轻自己的编码负担,而且往往可以提高程序的运行效率;这也是钻哥开始“Unity API”独立打造分类的初衷; ++2、Shader编程:想要做出一款精品游戏往往需要有高效的Shader的支持;Unity提供了一套改良的“Shader Lab”系统,优化了繁杂的“Open GL”编程; ++3、综合能力(技术+业务+管理):一款产品的制作除了功能编程外,往往会涉及很多其他领域,例如产品架构、UI交互设计、模型制作等,作为主要的编程人员,对其他相关领域的了解程序往往会影响到产品制作直至最后的产品体验; ++++立钻哥哥一直在推动【VR云游戏=Unity+SteamVR+云技术+5G+AI】,这个只是一个引子,抛砖引玉让大家对整个知识体系有一个明确的落地方向,宝宝们可以根据自己的兴趣方向进行拓展:比如Unity这里是指一种“3D游戏引擎”,也可拓展至“UE4、Cocos2dx”等游戏引擎;SteamVR是一种跨硬件解决方案,也可拓展至“VRTK”等第三方插件;“云技术+5G”是一种跨平台解决方案的核心技术,同样可拓展至其他平台解决方案;AI也是一种先进技术的举例,也可以拓展至任何一种前沿技术; |
@@提示:有些博客可能只是开了头,如果感兴趣的同学,可以“点赞”或“评论区留言”,只要关注的同学多了,那就会继续完善哟!(“++==”,表示没有写完的,如果关注度不高就不完善了;“++ok++”,表示此篇博客已经完成,是阶段性完整的!)
$$$$博客溯源:
++++VR云游戏=Unity+SteamVR+云技术+5G+AI;(说明:AI人工智能不是我们的主要研究技术,只是了解一下,领略一下有风的感觉!但是,VR是我们的研究重点)
++++【Unity API】分类:https://blog.csdn.net/vrunsoftyanlz/category_7637520.html
++++【Unity开发基础】分类:https://blog.csdn.net/vrunsoftyanlz/category_7309057.html
++++【Linux系统编程】分类:https://blog.csdn.net/vrunsoftyanlz/category_9694767.html
++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html
++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html
++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/
#NavMeshAgent导航网格代理
#NavMeshAgent导航网格代理 |
#NavMeshAgent导航网格代理++A1、Description描述++B2、Variables变量++C3、Public Function共有函数++D4、Message消息 |
#A1、Description描述
#A1、Description描述 |
++A1、Description描述
++++立钻哥哥:NavMeshAgent(导航网格代理)是导航网格代理,该组件附加于游戏中移动角色上,允许使用导航网格在场景中进行导航;
++++[namespace]:UnityEngine;
++++[Inherits from]:Behaviour;
++++[Mesh网格]:https://blog.csdn.net/VRunSoftYanlz/article/details/107419330
++++[NavMesh导航]:https://blog.csdn.net/VRunSoftYanlz/article/details/108269406
++++[Component组件]:https://blog.csdn.net/VRunSoftYanlz/article/details/106367004
++++【Unity API】分类:https://blog.csdn.net/vrunsoftyanlz/category_7637520.html
++++[Unity快速入门]:https://blog.csdn.net/VRunSoftYanlz/article/details/105776475
++++[UnityAPI目录]:https://blog.csdn.net/VRunSoftYanlz/article/details/106533906
++++[Application应用]:https://blog.csdn.net/VRunSoftYanlz/article/details/106086327
++++[Object对象]:https://blog.csdn.net/VRunSoftYanlz/article/details/106202194
++++[GameObject]:https://blog.csdn.net/VRunSoftYanlz/article/details/106223815
++++[MonoBehaviour]:https://blog.csdn.net/VRunSoftYanlz/article/details/106533256
++++[Component组件]:https://blog.csdn.net/VRunSoftYanlz/article/details/106367004
++++[Transform变换]:https://blog.csdn.net/VRunSoftYanlz/article/details/106607761
++++[Camera摄像机]:https://blog.csdn.net/VRunSoftYanlz/article/details/106148837
++++[Shader着色器]:https://blog.csdn.net/VRunSoftYanlz/article/details/106321040
++++[Material材质]:https://blog.csdn.net/VRunSoftYanlz/article/details/81814303
++++[Physics物理]:https://blog.csdn.net/VRunSoftYanlz/article/details/106268062
++++[Collider碰撞器]:https://blog.csdn.net/VRunSoftYanlz/article/details/106696886
++++[Rigidbody刚体]:https://blog.csdn.net/VRunSoftYanlz/article/details/106698042
++++[Animator动画]:https://blog.csdn.net/VRunSoftYanlz/article/details/106863517
++++[Animation]:https://blog.csdn.net/VRunSoftYanlz/article/details/106931626
++++[AnimationCurve]:https://blog.csdn.net/VRunSoftYanlz/article/details/106952329
++++[AnimationEvent]:https://blog.csdn.net/VRunSoftYanlz/article/details/107008468
++++[Joint关节]:https://blog.csdn.net/VRunSoftYanlz/article/details/106771226
++++[RaycastHit]:https://blog.csdn.net/VRunSoftYanlz/article/details/106292370
++++[ParticleSystem]:https://blog.csdn.net/VRunSoftYanlz/article/details/106341995
++++[WWW万维网]:https://blog.csdn.net/VRunSoftYanlz/article/details/106412890
++++[LineRenerer]:https://blog.csdn.net/VRunSoftYanlz/article/details/106306388
++++[WheelCollider]:https://blog.csdn.net/VRunSoftYanlz/article/details/82356217
++++[MovieTexture]:https://blog.csdn.net/VRunSoftYanlz/article/details/106434063
++++[Keyframe关键帧]:https://blog.csdn.net/VRunSoftYanlz/article/details/107008908
++++[Debug调试]:https://blog.csdn.net/VRunSoftYanlz/article/details/107029574
++++[Quaternion]:https://blog.csdn.net/VRunSoftYanlz/article/details/107271863
++++[RectTransform]:https://blog.csdn.net/VRunSoftYanlz/article/details/107092732
++++[Gizmos可视化]:https://blog.csdn.net/VRunSoftYanlz/article/details/107049986
++++[LightProbes探测]:https://blog.csdn.net/VRunSoftYanlz/article/details/107372601
++++[Ray射线]:https://blog.csdn.net/VRunSoftYanlz/article/details/107348830
++++[Time时间]:https://blog.csdn.net/VRunSoftYanlz/article/details/107325540
#B2、Static Variables静态变量
#B2、Variables变量 |
++B2、Variables变量++++B2.1、acceleration++++B2.2、angularSpeed++++B2.3、areaMask++++B2.4、autoBraking++++B2.5、autoRepath++++B2.6、autoTraverseOffMeshLink++++B2.7、avoidancePriority++++B2.8、baseOffset++++B2.9、currentOffMeshLinkData++++B2.10、desiredVelocity++++B2.11、destination++++B2.12、hasPath++++B2.13、height++++B2.14、isOnNavMesh++++B2.15、isOnOffMeshLink++++B2.16、isPathStale++++B2.17、nextOffMeshLinkData++++B2.18、nextPosition++++B2.19、obstacleAvoidanceType++++B2.20、path++++B2.21、pathPending++++B2.22、pathStatus++++B2.23、radius++++B2.24、remainingDistance++++B2.25、speed++++B2.26、steeringTarget++++B2.27、stoppingDistance++++B2.28、updatePosition++++B2.29、updateRotation++++B2.30、velocity++++B2.31、YanlzXREngine.NavMeshAgent.Variables |
++B2.1、acceleration
++B2.1、acceleration |
++B2.1、acceleration
++++立钻哥哥:加速度;
public float acceleration; |
++++该代理跟随路径的最大加速度,指定单位/秒^2;
++++代理没有精准的跟随导航系统计算出的路径的线段,而是沿着路径使用位置点作为间接目的点;该值是代理朝着下一个位置点移动的加速度的最大数量;
++B2.2、angularSpeed
++B2.2、angularSpeed |
++B2.2、angularSpeed
++++立钻哥哥:角速度;
public float angularSpeed; |
++++跟随路径的最大转向速度单位(度/秒);
++++当代理根据在拐角处定义的位置点绕行转向时角速度最大的比率;实际的转弯半径也是受到代理靠近的速度和最大加速度的影响;
++B2.3、areaMask
++B2.3、areaMask |
++B2.3、areaMask
++++立钻哥哥:区域遮挡;
public int areaMask; |
++++指定导航网格区域时可行的;该变区域遮挡将会使路径变旧;
++++这是一组标志;
++B2.4、autoBraking
++B2.4、autoBraking |
++B2.4、autoBraking
++++立钻哥哥:自动制动;
public bool autoBraking; |
++++该代理是否自动制动去避免超过目的点;
++++如果代理需要去到达靠近目标点那么它将会代表性地需要去避免超出或者无线循环性围绕目的区域转圈;如果该属性设置为true,当代理接近目的地时将会自动制动;
++B2.5、autoRepath
++B2.5、autoRepath |
++B2.5、autoRepath
++++立钻哥哥:自动重新获取路径;
public bool autoRepath; |
++++当现在的路径变成无效时该代理是否尝试获取新路径;
++++如果代理达到局部的末尾并且是旧路径,新的路径计算也被尝试获取;
++B2.6、autoTraverseOffMeshLink
++B2.6、autoTraverseOffMeshLink |
++B2.6、autoTraverseOffMeshLink
++++立钻哥哥:自动穿过OffMeshLink;
public bool autoTraverseOffMeshLink; |
++++该代理是否自动穿过OffMeshLinks;
++++Off-mesh连接用于连接不相交区域的导航网格;通常,当该属性设置为true时,角色应该有能力自动通过或者穿过连接;但是,在需要特殊控制移动的时候它也可以被设置为false;
++B2.7、avoidancePriority
++B2.7、avoidancePriority |
++B2.7、avoidancePriority
++++立钻哥哥:逃避优先级;
public int avoidancePriority; |
++++逃避优先级;
++++当代理表现为逃避时,优先级低的代理将会被忽略;该值的范围从0到99:最重要=0,最不重要=99,默认=50;
++B2.8、baseOffset
++B2.8、baseOffset |
++B2.8、baseOffset
++++立钻哥哥:基础偏移;
public float baseOffset; |
++++对象自身的相对垂直位移;
++B2.9、currentOffMeshLinkData
++B2.9、currentOffMeshLinkData |
++B2.9、currentOffMeshLinkData
++++立钻哥哥:当前关闭网格连接数据;
public OffMeshLinkData currentOffMeshLinkData; |
++++当前关闭网格连接数据;
++++在这种情况下该代理不在OffMeshLink上那么OffMeshLinkData标记为无效;
++B2.10、desiredVelocity
++B2.10、desiredVelocity |
++B2.10、desiredVelocity
++++立钻哥哥:需求速度;
public Vector3 desiredVelocity; |
++++该代理的需求速度包括任何逃避时潜在的贡献(只读);
++B2.11、destination
++B2.11、destination |
++B2.11、destination
++++立钻哥哥:目的地;
public Vector3 destination; |
++++获取或者尝试去在世界空间单位中设置代理的目的地;
++++返回为该代理设置的目的地;
++++如果目的地设置了但是路径没有处理该位置那么返回的将会是最靠近预先设置位置的有效导航网格位置;
++++如果代理没有路径或者需求位置:返回该代理在导航网格上的位置;
++++如果代理没有映射到导航网格(即场景没有导航网格):返回一个无限大的位置;
++++要求代理移动到有效的导航网格位置,该位置最靠近要求的目的地;
++++路径结果可能不变成可获取的直到几帧之后;使用pathPending去查询未完成的结果;
++++如果没有路径是需求的(即场景中没有导航网格),那么不可能导航网格位置附近找到有效值;如果需要去明确的解决这种情况,使用SetDestination并检查返回值;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(NavMeshAgent))] public class YanlzNavMeshAgent : MonoBehaviour{ public Transform target; Vector3 destination; NavMeshAgent agent;
void Start(){ //Cache agent component and destination agent = GetComponent<NavMeshAgent>(); destination = agent.destination; } //立钻哥哥:void Start(){}
void Update(){
//Update destination if the target moves one unit if(Vector3.Distance(destination, target.position) > 1.0f){ destination = target.position; agent.destination = destination; } //立钻哥哥:if(){}
} //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzNavMeshAgent{} |
++B2.12、hasPath
++B2.12、hasPath |
++B2.12、hasPath
++++立钻哥哥:有路径;
public bool hasPath; |
++++当前代理是否有路径(只读)?
++++如果代理有需求的路径计算,该属性将会是true并且其他为false;
++B2.13、height
++B2.13、height |
++B2.13、height
++++立钻哥哥:高度;
public float height; |
++++代理经过障碍物下方目的高度,等等;
++B2.14、isOnNavMesh
++B2.14、isOnNavMesh |
++B2.14、isOnNavMesh
++++立钻哥哥:是否在导航网格上;
public bool isOnNavMesh; |
++++当前代理束缚到导航网格(只读)?
++++如果代理因为某些原因没有束缚到导航网格,该属性为true;即,假设场景没有导航网格;
++B2.15、isOnOffMeshLink
++B2.15、isOnOffMeshLink |
++B2.15、isOnOffMeshLink
++++立钻哥哥:是否在OffMeshLink上;
public bool isOnOffMeshLink; |
++++当前代理位置是否在OffMeshLink上?(只读)
++++当autoTraverseOffMeshLink是false并且当穿过该连接时需要自定义运动,该属性是有用的;
++B2.16、isPathStale
++B2.16、isPathStale |
++B2.16、isPathStale
++++立钻哥哥:是否是旧路径;
public bool isPathStale; |
++++当前路径是否是旧路径(只读);
++++当为true时,路径可能不再是有效的或者最佳的;如果areaMask有任何改变,如果任何OffMeshLink是启用或者禁用,或者如果NavMeshAreas的花费已经改变,该标志将会被设置;
++B2.17、nextOffMeshLinkData
++B2.17、nextOffMeshLinkData |
++B2.17、nextOffMeshLinkData
++++立钻哥哥:下一个OffMeshLink数据;
public OffMeshLinkData nextOffMeshLinkData; |
++++在当前路径上的下一个OffMeshLinkData;
++++在这种情况下当前不包含OffMeshLink,OffMeshLinkData被标记为无效;
++B2.18、nextPosition
++B2.18、nextPosition |
++B2.18、nextPosition
++++立钻哥哥:下个位置;
public Vector3 nextPosition; |
++++获取或者设置导航网格的模拟仿真位置;
++++在世界空间坐标的位置向量和单位;
++++该nextPosition与Transform.position是耦合的;默认情况下导航网格代理的变换位置将会与内部仿真位置相匹配与此同时更新脚本被调用;该耦合可以通过设置updatePosition来开启或者关闭;
++++当updatePosition是true,Transform.position反映了模拟位置,当为false,变换的位置和导航网格代理不是同步的,并且会看到一个两者之间的区别;当updatePosition转变为开启,Transform.position将会立即移动匹配nextPosition位置;
++++通过设置nextPosition可以直接控制内部代理的位置;代理间会朝着该位置移动,但是通过导航网格的连通性和边界驱动;同样的如果该位置是不断更新和评估,它是有用的;
++++此外它可以用于直接控制代理位置:尤其是通过某些其他东西控制到达transform,即动画,物理系统,脚本或者输入控制;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzNavMeshAgent : MonoBehaviour{
void Start(){ //Update the transform position explicitly in the OnMyAnimatorMove callback GetComponent<NavMeshAgent>().updatePosition = false; } //立钻哥哥:void Start(){}
void OnMyAnimatorMove(){ transform.position = GetComponent<NavMeshAgent>().nextPosition; } //立钻哥哥:void OnMyAnimatorMove(){}
} //立钻哥哥:public class YanlzNavMeshAgent{}
|
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzNavMeshAgent : MonoBehaviour{ public bool agentIsControlledByOther;
void Update(){ var agent = GetComponent<NavMeshAgent>(); agent.updatePosition = !agentIsControllerByOther;
if(agentIsControlledByOther){ GetComponent<NavMeshAgent>().nextPosition = transform.position; } //立钻哥哥:if(){} } //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzNavMeshAgent{}
|
++B2.19、obstacleAvoidanceType
++B2.19、obstacleAvoidanceType |
++B2.19、obstacleAvoidanceType
++++立钻哥哥:障碍逃避类型;
public ObstacleAvoidanceType obstacleAvoidanceType; |
++++逃避的质量的级别;
++++这个属性允许权衡避障的精度,然后处理器负荷需要实现它;要求的质量/性能值将取决于场景的复杂度,但作为一般规则,以质量为代价可以实现更快的性能,反之亦然;
++B2.20、path
++B2.20、path |
++B2.20、path
++++立钻哥哥:路径;
public NavMeshPath path; |
++++获取或者设置当前路径属性;
++++该属性可以被用于GUI,调试和其他目的获得路径导航系统计算的点;在一般方法中从用户代码创建的路径可以被设置为代理去跟随;例如这可能是个覆盖性的巡逻路线而不是两点间最佳距离;
++B2.21、pathPending
++B2.21、pathPending |
++B2.21、pathPending
++++立钻哥哥:路径等待;
public bool pathPending; |
++++该路径在被计算的过程中但是还没准备(只读)?
++B2.22、pathStatus
++B2.22、pathStatus |
++B2.22、pathStatus
++++立钻哥哥:路径状况;
public NavMeshPathStatus pathStatus; |
++++当前路况的状态(完整,局部或者无效);
++B2.23、radius
++B2.23、radius |
++B2.23、radius
++++立钻哥哥:半径;
public float radius; |
++++代理的逃避半径;
++++这是代理的“个人空间”,空间内障碍和其他代理应不通过;
++B2.24、remainingDistance
++B2.24、remainingDistance |
++B2.24、remainingDistance
++++立钻哥哥:剩余距离;
public float remainingDistance; |
++++在当前路径上代理的位置与目的地之间的距离(只读);
++++如果剩余距离是未知的那么该值将会是无穷大;
++B2.25、speed
++B2.25、speed |
++B2.25、speed
++++立钻哥哥:速度;
public float speed; |
++++当跟随路径时的最大移动速度;
++++代理跟随路径运动时需要象征性的加速或者减速(即,它在急速转弯时需要减速);该速度通过分割路径长度来限制并且时间控制加速度和刹车,但是速度不会超过设置的该属性值,设置在一个长的,直的路径上也是如此;
++B2.26、steeringTarget
++B2.26、steeringTarget |
++B2.26、steeringTarget
++++立钻哥哥:转向目标;
public Vector3 steeringTarget; |
++++获取当前沿着路径转向的目标(只读);
++++这通常是在沿着路径的下一个角落或路径的终点;
++++除非代理在OffMeshLink上移动,那么代理和转向目标之间是一个直的路径;
++++当接近并穿过OffMeshLink:该值是代理输入连接的位置;当代理正在OffMeshLink上穿过时该值是代理离开连接的位置;
++B2.27、stoppingDistance
++B2.27、stoppingDistance |
++B2.27、stoppingDistance
++++立钻哥哥:刹车距离;
public float stoppingDistance; |
++++从目标位置开始,在该距离之内刹车;
++++很少可能恰好抵达目标点,因此该属性可以设置一个可接受的半径范围,该范围之内代理可以刹车;更大的刹车距离会给代理更多的余地,在路径的末尾,可能避免突然刹车、转弯或其他难以令人信服的AI行为;
++B2.28、updatePosition
++B2.28、updatePosition |
++B2.28、updatePosition
++++立钻哥哥:更新位置;
public bool updatePosition; |
++++获取或者设置变换位置与模拟代理位置同步;默认值为true;
++++当为true时:改变变换位置将会影响模拟位置,反之亦然;
++++当为false时:模拟位置将不会被应用到变换位置,反之亦然;
++++设置updatePosition为false可以用于由脚本启用,明确控制变换位置;该属性允许去使用代理的模拟位置去驱使其他组件,那些转弯时设置变换位置的(即,动画的根运动或者物理系统);
++++当启用updatePosition(先前被禁用的),该变换将会被移动到模拟位置;这种方式保持约束代理在navmesh表面;
++B2.29、updateRotation
++B2.29、updateRotation |
++B2.29、updateRotation
++++立钻哥哥:更新旋转;
public bool updateRotation; |
++++代理是否应该更新方向?
++B2.30、velocity
++B2.30、velocity |
++B2.30、velocity
++++立钻哥哥:速度;
public Vector3 velocity; |
++++使用NavMeshAgent组件的当前速度,或者手动设置速度去控制代理;
++++读取该变量将返回基于人群仿真代理的当前速度;
++++设置变量将会重载模拟仿真(包括:朝目的地移动,碰撞躲避,和加速度控制)和命令导航网格代理直接使用指定速度移动;当代理被速度控制时,它的运动依然在导航网格上;
++++直接设置速度,可以用于执行玩家特性,该玩家在导航网格上移动并影响模拟人群的剩余部分;另外,将优先级设置为高(较小的值优先级更高),将使其他模拟的代理甚至更急切地避免玩家控制代理;
++++它推荐手动控制代理时每帧设置速度,并且如果释放控制仿真,设置速度为0;如果代理的速度设置为某个值并且停止更新它,该模拟将会从这儿获取并且缓慢降低速度(假设没有设置目的地);
++++注意:读取速度将总会从模拟返回;如果设置该值,该效果将会在下次更新中显示;因为返回的速度来自模拟(包括躲避和碰撞处理),它可以与设置的速度不同;
++++在距离单位中指定的单位是每秒(和物理上一样),并且在全局坐标系统中;
#C3、Public Functions公共函数
#C3、Public Functions公共函数 |
++C3、Public Functions公共函数++++C3.1、ActivateCurrentOffMeshLink++++C3.2、CalculatePath++++C3.3、CompleteOffMeshLink++++C3.4、FindClosestEdge++++C3.5、GetAreaCost++++C3.6、Move++++C3.7、Raycast++++C3.8、ResetPath++++C3.9、Resume++++C3.10、SamplePathPosition++++C3.11、SetAreaCost++++C3.12、SetDestination++++C3.13、SetPath++++C3.14、Stop++++C3.15、Wrap++++C3.16、YanlzXREngine.NavMeshAgent.PublicFunctions |
++C3.1、ActivateCurrentOffMeshLink
++C3.1、ActivateCurrentOffMeshLink |
++C3.1、ActivateCurrentOffMeshLink
++++立钻哥哥:激活当前分离网格链接;
public void ActivateCurrentOffMeshLink(bool activated); |
++++[activated]:Is the link activated?
++++启用或者禁用当前分离网格链接;
++++该函数激活或者停止当前代理等待的分离网格链接;这用于准许使用游戏世界的最近发现的区域或者模拟创造或者移动障碍物到一个区域;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzNavMeshAgent : MonoBehaviour{ private NavMeshAgent agent;
void Start(){ agent = GetComponent<NavMeshAgent>(); } //立钻哥哥:void Start(){}
void OpenDiscoveredArea(Hashtable areasDiscovered){
if(agent.isOnOffMeshLink){ if(areasDiscovered.ContainsKey(agent.currentOffMeshLinkData.offMeshLink.name)){ agent.ActivateCurrentOffMeshLink(true); } //立钻哥哥:if(){} } //立钻哥哥:if(agent.isOnOffMeshLink){}
} //立钻哥哥:void OpenDiscoveredArea(){}
} //立钻哥哥:public class YanlzNavMeshAgent{} |
++C3.2、CalculatePath
++C3.2、CalculatePath |
++C3.2、CalculatePath
++++立钻哥哥:计算路径;
public bool CalculatePath(Vector3 targetPosition, NavMeshPath path); |
++++[targetPosition]:The final position of the path requested;
++++[path]:The resulting path;
++++[返回值]:bool True if a path is found;
++++计算出路径指定点并存储结果路径;
++++此函数可用于计划提前,当需要该路径时避免在游戏中的延迟;另一个用途是检查移动代理之前是否可以到达目标位置;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzNavMeshAgent : MonoBehaviour{ public Transform target; private NavMeshAgent agent;
void Start(){ agent = GetComponent<NavMeshAgent>(); NavMeshPath path = new NavMeshPath(); agent.CalculatePath(target.position path);
if(path.status == NavMeshPathStatus.PathPartial){ } //立钻哥哥:if(){}
} //立钻哥哥:void Start(){}
} //立钻哥哥:public class YanlzNavMeshAgent{} |
++C3.3、CompleteOffMeshLink
++C3.3、CompleteOffMeshLink |
++C3.3、CompleteOffMeshLink
++++立钻哥哥:完成分离网格链接;
public void CompleteOffMeshLink(); |
++++在当前分离网格链接上完成运动;
++++在当前的分离网格链接的另一端,代理将移动到最近的有效导航网格位置上;
++++CompleteOffMeshLink没有效果除非代理在OffMeshLink上;
++++当autoTraverseOffMeshLink是禁用的,在分离网格链接上代理将会暂停直到该函数被调用;这是用于执行自定义穿过分离网格链接运动的;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(NavMeshAgent))] public class YanlzNavMeshAgent : MonoBehaviour{ public MyOffMeshLinkMoveMethod method = MyOffMeshLinkMoveMethod.Parabola;
IEnumerator Start(){ NavMeshAgent agent = GetComponent<NavMeshAgent>(); agent.autoTraverseOffMeshLink = false;
while(true){ if(agent.isOnOffMeshLink){ if(method == MyOffMeshLinkMoveMethod.NormalSpeed){ yield return StartCoroutine(MyNormalSpeed(agent)); }else if(method == OffMeshLinkMoveMethod.Parabola){ yield return StartCoroutine(MyParabola(agent, 2.0f, 0.5f)); } //立钻哥哥:if(){}else if(){}
agent.CompleteOffMeshLink(); } //立钻哥哥:if(agent.isOnOffMeshLink){}
yield return null; } //立钻哥哥:while(){} } //立钻哥哥:IEnumerator Start(){}
IEnumerator MyNormalSpeed(NavMeshAgent agent){ MyOffMeshLinkData data = agent.currentOffMeshLinkData; Vector3 endPos = data.endPos + Vector3.up * agent.baseOffset;
while(agent.transform.position != endPos){ agent.transform.position = Vector3.MoveTowards(agent.transform.position, endPos, agent.speed * Time.deltaTime); yield return null; } //立钻哥哥:while(){} } //立钻哥哥:IEnumerator MyNormalSpeed(){}
IEnumerator MyParabola(NavMeshAgent agent, float height, float duration){ MyOffMeshLinkData data = agent.currentOffMeshLinkData; Vector3 startPos = agent.transform.position; Vector3 endPos = data.endPos + Vector3.up * agent.baseOffset; float normalizedTime = 0.0f;
while(normalizeTime < 1.0f){ float yOffset = height * 4.0f * (normalizedTime - normalizedTime * normalizedTime); agent.transform.position = Vector3.Lerp(startPos, endPos, normalizedTime) +yOffset * Vector3.up; normalizedTime += Time.deltaTime / duration; yield return null; } //立钻哥哥:while(){} } //立钻哥哥:IEnumerator MyParabola(){}
} //立钻哥哥:public class YanlzNavMeshAgent{}
public enum MyOffMeshLinkMoveMethod{ Teleport, NormalSpeed, Parabola } //立钻哥哥:public enum MyOffMeshLinkMoveMethod{}
|
++C3.4、FindClosestEdge
++C3.4、FindClosestEdge |
++C3.4、FindClosestEdge
++++立钻哥哥:寻找最近边缘;
public bool FindClosestEdge(out NavMeshHit hit); |
++++[hit]:Holds the properties of the resulting location;
++++[返回值]:bool True if a nearest edge is found;
++++查找导航网格最近的边缘;
++++返回的NavMeshHit对象包含位置和导航网格最近边缘上的最近的点的细节;因为边缘通常对应于墙壁或者其他大型对象,该方法可以用于尽可能的角色靠近墙壁隐藏;
++++[NavMeshHit导航网格碰撞信息]:导航网格查询的结果信息;(变量:distance(距离)、hit(碰撞)、mask(遮罩)、normal(法线)、position(位置));
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzNavMeshAgent : MonoBehaviour{ private NavMeshAgent agent;
void Start(){ agent = GetComponent<NavMeshAgent>(); } //立钻哥哥:void Start(){}
void Update(){
if(Input.GetMouseButtonDown(0)){ TakeMyCover(); } //立钻哥哥:if(){}
} //立钻哥哥:void Update(){}
void TakeMyCover(){ NavMeshHit hit;
if(agent.FindClosestEdge(out hit)){ agent.SetDestination(hit.position); } //立钻哥哥:if(){}
} //立钻哥哥:void TakeMyCover(){}
} //立钻哥哥:public class YanlzNavMeshAgent{} |
++C3.5、GetAreaCost
++C3.5、GetAreaCost |
++C3.5、GetAreaCost
++++立钻哥哥:获取区域文本;
public float GetAreaCost(int areaIndex); |
++++[areaIndex]:Area Index;
++++[返回值]:float Current cost for specified area index;
++++当穿过特别类型的区域时获取路径计算成本;
++++路径的成本是“难”在计算它所涉及的数量:最短路径可能不是最好的如果它经过困难的地面,如泥、雪等;不同类型的地区都是由Unity中navmesh地区表示;每个距离单元的成本单位给定某一区的成本;注意:路径的成本仅适用于寻路系统并跟随路径时不会自动影响代理的运动速度;事实上,路径的成本可能表示其他因素,例如危险(安全但长路径通过雷区)或能见度(保持一个角度在阴影的长路径);
++C3.6、Move
++C3.6、Move |
++C3.6、Move
++++立钻哥哥:移动;
public void Move(Vector3 offset); |
++++[offset]:The relative movement vector;
++++应用相对运动到当前位置;
++++如果代理有路径,它将被校准;
++C3.7、Raycast
++C3.7、Raycast |
++C3.7、Raycast
++++立钻哥哥:射线投影;
public bool Raycast(Vector3 targetPosition, out NavMeshHit hit); |
++++[targetPosition]:The desired end position of movement;
++++[hit]:Properties of the obstacle detected by the ray(if any);
++++[返回值]:bool True if there is an obstacle between the agent and the target position, otherwise false;
++++在导航网格中朝着目标方向追踪直线路径而不移动代理;
++++该函数跟随代理位置和指定位置之间的射线路径;如果沿着路线遇到障碍,然后返回true值并且障碍对象的其他细节被存储进hit参数中;这可以用来检查是否有个清晰的镜头或者角色与目标对象之间的瞄准线;该函数更相似于Physics.Raycast,因为使用导航网格执行线追踪是个更简单的方式并且处理开支更低;
++++[Physics物理]:https://blog.csdn.net/VRunSoftYanlz/article/details/106268062
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzNavMeshAgent : MonoBehaviour{ public Transform target; private NavMeshAgent agent;
void Start(){ agent = GetComponent<NavMeshAgent>(); } //立钻哥哥:void Start(){}
void Update(){ NavMeshHit hit; if(!agent.Raycast(target.position, out hit)){ } //立钻哥哥:if(){} } //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzNavMeshAgent{} |
++C3.8、ResetPath
++C3.8、ResetPath |
++C3.8、ResetPath
++++立钻哥哥:重新设置路径;
public void ResetPath(); |
++++清除当前路径;
++++当路径被清除,代理不会开始寻找新路径直到SetDestination被调用;
++++注意:如果代理在OffMeshLink上,当该函数被调用时,它将会立刻完成连接;
++C3.9、Resume
++C3.9、Resume |
++C3.9、Resume
++++立钻哥哥:恢复;
public void Resume(); |
++++暂停之后沿着当前路径重新恢复运动;
++C3.10、SamplePathPosition
++C3.10、SamplePathPosition |
++C3.10、SamplePathPosition
++++立钻哥哥:样本路径位置;
public bool SamplePathPosition(int areaMask, float maxDistance, out NavMeshHit hit); |
++++[areaMask]:A bitfield mask specifying which NavMesh areas can be passed when tracing the path;
++++[maxDistance]:Terminate scanning the path at this distance;
++++[hit]:Holds the properties of the resulting location;
++++[返回值]:bool True if terminated before reaching the position at maxDistance, false otherwise;
++++沿着当前路径的样本位置;
++++该函数看向当前路径前方指定距离;然后在NavMeshHit对象中返回该位置的网格的详细信息;这可以被使用,例如,检查角色到达那儿之前的表面类型:如果角色要涉水,那么他可以把枪举高到头顶之上;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzNavMeshAgent : MonoBehaviour{ public Transform target; public NavMesh mesh; private NavMeshAgent agent; private int waterMask;
void Start(){ agent = GetComponent<NavMeshAgent>(); waterMask = 1 << NavMesh.GetAreaFromName(“Water”); agent.SetDestination(target.position); } //立钻哥哥:void Start(){}
void Update(){ NavMeshHit hit;
//Check all areas one length unit ahead. if(!agent.SamplePathPosition(NavMesh.AllAreas, 1.0F, out hit)){ if((hit.mask && waterMask) != 0){ //Water detected along the path ... } //立钻哥哥:if(){} } //立钻哥哥:if(!agent.SamplePathPosition()){} } //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzNavMeshAgent{} |
++C3.11、SetAreaCost
++C3.11、SetAreaCost |
++C3.11、SetAreaCost
++++立钻哥哥:设置区域成本;
public void SetAreaCost(int areaIndex, float areaCost); |
++++[areaIndex]:Area cost;
++++[areaCost]:New cost for the specified area index;
++++设置穿越区域的区域类型的成本;
++++如果启用或禁用代理那么成本将重置成本的默认层;
++C3.12、SetDestination
++C3.12、SetDestination |
++C3.12、SetDestination
++++立钻哥哥:设置目的地;
public bool SetDestination(Vector3 target); |
++++[target]:The target point to navigate to;
++++[返回值]:bool True if the destination was requested successfully, otherwise false;
++++设置或者更新目的地因此触发计算新的路径;
++++注意:该路径可能不会变成可获取的直到一些帧之后;当路径被计算出,pathPending将会是true;如果一个有效路径变得可获取,那么代理将会重新恢复运动;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzNavMeshAgent : MonoBehaviour{ private NavMeshAgent agent;
void Start(){ agent = GetComponent<NavMeshAgent>(); } //立钻哥哥:void Start(){}
void Update(){ RaycastHit hit;
if(Input.GetMouseButtonDown(0)){ Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit)){ agent.SetDestination(hit.point); } //立钻哥哥:if(){} } //立钻哥哥:if(Input.GetMouseButtonDown()){}
} //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzNavMeshAgent{} |
++C3.13、SetPath
++C3.13、SetPath |
++C3.13、SetPath
++++立钻哥哥:设置路径;
public bool SetPath(NavMeshPath path); |
++++[path]:New path to follow;
++++[返回值]:bool True if the path is successfully assigned;
++++分配新路径给该代理;
++++如果路径成功分配给代理将会朝着新目标重新恢复运动;
++C3.14、Stop
++C3.14、Stop |
++C3.14、Stop
++++立钻哥哥:刹车;
public void Stop(); |
++++该代理沿着它的当前路径的刹车运动;
++C3.15、Wrap
++C3.15、Wrap |
++C3.15、Wrap
++++立钻哥哥:弯曲;
public bool Warp(Vector3 newPosition); |
++++[newPosition]:New position to wrap the agent to;
++++[返回值]:bool True if agent is successfully warped, otherwise false;
++++弯曲代理提供位置;
++++如果成功返回true,否则返回false;
#D4、立钻哥哥对NavMeshAgent类的拓展
#D4、立钻哥哥对NavMeshAgent类的拓展 |
++++【Unity API】分类:https://blog.csdn.net/vrunsoftyanlz/category_7637520.html
++++[Unity快速入门]:https://blog.csdn.net/VRunSoftYanlz/article/details/105776475
++++[UnityAPI目录]:https://blog.csdn.net/VRunSoftYanlz/article/details/106533906
++++[Application应用]:https://blog.csdn.net/VRunSoftYanlz/article/details/106086327
++++[Object对象]:https://blog.csdn.net/VRunSoftYanlz/article/details/106202194
++++[GameObject]:https://blog.csdn.net/VRunSoftYanlz/article/details/106223815
++++[MonoBehaviour]:https://blog.csdn.net/VRunSoftYanlz/article/details/106533256
++++[Component组件]:https://blog.csdn.net/VRunSoftYanlz/article/details/106367004
++++[Transform变换]:https://blog.csdn.net/VRunSoftYanlz/article/details/106607761
++++[Camera摄像机]:https://blog.csdn.net/VRunSoftYanlz/article/details/106148837
++++[Shader着色器]:https://blog.csdn.net/VRunSoftYanlz/article/details/106321040
++++[Material材质]:https://blog.csdn.net/VRunSoftYanlz/article/details/81814303
++++[Physics物理]:https://blog.csdn.net/VRunSoftYanlz/article/details/106268062
++++[Collider碰撞器]:https://blog.csdn.net/VRunSoftYanlz/article/details/106696886
++++[Rigidbody刚体]:https://blog.csdn.net/VRunSoftYanlz/article/details/106698042
++++[Animator动画]:https://blog.csdn.net/VRunSoftYanlz/article/details/106863517
++++[Animation]:https://blog.csdn.net/VRunSoftYanlz/article/details/106931626
++++[AnimationCurve]:https://blog.csdn.net/VRunSoftYanlz/article/details/106952329
++++[AnimationEvent]:https://blog.csdn.net/VRunSoftYanlz/article/details/107008468
++++[Joint关节]:https://blog.csdn.net/VRunSoftYanlz/article/details/106771226
++++[RaycastHit]:https://blog.csdn.net/VRunSoftYanlz/article/details/106292370
++++[ParticleSystem]:https://blog.csdn.net/VRunSoftYanlz/article/details/106341995
++++[WWW万维网]:https://blog.csdn.net/VRunSoftYanlz/article/details/106412890
++++[LineRenerer]:https://blog.csdn.net/VRunSoftYanlz/article/details/106306388
++++[WheelCollider]:https://blog.csdn.net/VRunSoftYanlz/article/details/82356217
++++[MovieTexture]:https://blog.csdn.net/VRunSoftYanlz/article/details/106434063
++++[Keyframe关键帧]:https://blog.csdn.net/VRunSoftYanlz/article/details/107008908
++++[Debug调试]:https://blog.csdn.net/VRunSoftYanlz/article/details/107029574
++++[Quaternion]:https://blog.csdn.net/VRunSoftYanlz/article/details/107271863
++++[RectTransform]:https://blog.csdn.net/VRunSoftYanlz/article/details/107092732
++++[Gizmos可视化]:https://blog.csdn.net/VRunSoftYanlz/article/details/107049986
++++[LightProbes探测]:https://blog.csdn.net/VRunSoftYanlz/article/details/107372601
++++[Ray射线]:https://blog.csdn.net/VRunSoftYanlz/article/details/107348830
++++[Time时间]:https://blog.csdn.net/VRunSoftYanlz/article/details/107325540
++++[HingeJoint铰链关节]:https://blog.csdn.net/VRunSoftYanlz/article/details/108478006
++++[Logger记录器]:https://blog.csdn.net/vrunsoftyanlz/article/details/108456660
++++[Gyroscope陀螺仪]:https://blog.csdn.net/vrunsoftyanlz/article/details/108393437
++++[CharacterController]:https://blog.csdn.net/vrunsoftyanlz/article/details/108287279
++++[NavMesh导航网格]:https://blog.csdn.net/VRunSoftYanlz/article/details/108269406
++++[Event事件]:https://blog.csdn.net/vrunsoftyanlz/article/details/108246710
++++[GUI界面]:https://blog.csdn.net/VRunSoftYanlz/article/details/107549711
++++[Graphics图形]:https://blog.csdn.net/VRunSoftYanlz/article/details/107523428
++++[RenderTexture]:https://blog.csdn.net/VRunSoftYanlz/article/details/107501834
++++[SMRenderer]:https://blog.csdn.net/VRunSoftYanlz/article/details/107501557
++++[Mesh网格]:https://blog.csdn.net/VRunSoftYanlz/article/details/107419330
++++[PSRenderer]:https://blog.csdn.net/VRunSoftYanlz/article/details/107395415
++++[Particle粒子]:https://blog.csdn.net/VRunSoftYanlz/article/details/107394743
++++[Light灯光]:https://blog.csdn.net/VRunSoftYanlz/article/details/107372030
++++[Mathf数学函数]:https://blog.csdn.net/VRunSoftYanlz/article/details/107307385
++++[Vector2二维]:https://blog.csdn.net/VRunSoftYanlz/article/details/107239428
++++[Vector3三维]:https://blog.csdn.net/VRunSoftYanlz/article/details/107170428
++++[Vector4四维]:https://blog.csdn.net/VRunSoftYanlz/article/details/107147669
++++[Color颜色]:https://blog.csdn.net/VRunSoftYanlz/article/details/107147170
++++[Cloth布料]:https://blog.csdn.net/VRunSoftYanlz/article/details/107131605
++++[Canvas画布]:https://blog.csdn.net/VRunSoftYanlz/article/details/107117293
++++[TransitionInfo]:https://blog.csdn.net/VRunSoftYanlz/article/details/107116998
++++[AniStateInfo]:https://blog.csdn.net/VRunSoftYanlz/article/details/107116694
++++[AnimationState]:https://blog.csdn.net/VRunSoftYanlz/article/details/107093213
++++[Rect矩阵]:https://blog.csdn.net/VRunSoftYanlz/article/details/107073059
++++[Random随机数]:https://blog.csdn.net/VRunSoftYanlz/article/details/107072515
++++[PlayerPrefs存档]:https://blog.csdn.net/VRunSoftYanlz/article/details/107029106
++++[StateMachine]:https://blog.csdn.net/VRunSoftYanlz/article/details/107028714
++++[AnimationClip]:https://blog.csdn.net/VRunSoftYanlz/article/details/106951675
++++[Input输入]:https://blog.csdn.net/VRunSoftYanlz/article/details/106843487
++++[Resources资源]:https://blog.csdn.net/VRunSoftYanlz/article/details/106818524
++++[Network网络]:https://blog.csdn.net/VRunSoftYanlz/article/details/106795026
++++[Collision碰撞]:https://blog.csdn.net/VRunSoftYanlz/article/details/106697669
++++[Matrix4x4矩阵]:https://blog.csdn.net/VRunSoftYanlz/article/details/106504027
++++[Renerer渲染器]:https://blog.csdn.net/VRunSoftYanlz/article/details/106481994
++++[AudioSource]:https://blog.csdn.net/VRunSoftYanlz/article/details/106462679
++++[AudioClip]:https://blog.csdn.net/VRunSoftYanlz/article/details/106448955
++++[Texture纹理]:https://blog.csdn.net/VRunSoftYanlz/article/details/106448589
++++[AssetBundle]:https://blog.csdn.net/VRunSoftYanlz/article/details/106412190
++++[ScriptableObject]:https://blog.csdn.net/VRunSoftYanlz/article/details/106392769
@@提示:有些博客可能只是开了头,如果感兴趣的同学,可以“点赞”或“评论区留言”,只要关注的同学多了,那就会继续完善哟!(“++==”,表示没有写完的,如果关注度不高就不完善了;“++ok++”,表示此篇博客已经完成,是阶段性完整的!)
++++VR云游戏=Unity+SteamVR+云技术+5G+AI;(说明:AI人工智能不是我们的主要研究技术,只是了解一下,领略一下有风的感觉!但是,VR是我们的研究重点)
++++【Unity API】分类:https://blog.csdn.net/vrunsoftyanlz/category_7637520.html
++++【Unity开发基础】分类:https://blog.csdn.net/vrunsoftyanlz/category_7309057.html
++++【Linux系统编程】分类:https://blog.csdn.net/vrunsoftyanlz/category_9694767.html
++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html
++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html
++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/
【XR游戏开发QQ群:784477094】
++立钻哥哥推荐的拓展学习链接(Link_Url):
立钻哥哥推荐的拓展学习链接(Link_Url) |
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
++++虚拟现实VR资讯: https://blog.csdn.net/VRunSoftYanlz/article/details/89165846
++++HTC_VIVE开发基础:https://blog.csdn.net/VRunSoftYanlz/article/details/81989970
++++Oculus杂谈:https://blog.csdn.net/VRunSoftYanlz/article/details/82469850
++++Oculus安装使用:https://blog.csdn.net/VRunSoftYanlz/article/details/82718982
++++Unity+SteamVR=>VR:https://blog.csdn.net/VRunSoftYanlz/article/details/88809370
++++Unity减少VR晕眩症:https://blog.csdn.net/VRunSoftYanlz/article/details/89115518
++++SteamVR简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86484254
++++SteamVR脚本功能分析:https://blog.csdn.net/VRunSoftYanlz/article/details/86531480
++++SteamVR2.0开发指南:https://blog.csdn.net/VRunSoftYanlz/article/details/86618187
++++SteamVR2.2.0开发指南:https://blog.csdn.net/VRunSoftYanlz/article/details/88784527
++++SteamVR2.2.0快速入门:https://blog.csdn.net/VRunSoftYanlz/article/details/88833579
++++SteamVR2.2.0交互系统:https://blog.csdn.net/VRunSoftYanlz/article/details/89199778
++++SteamVR2.2.0传送机制:https://blog.csdn.net/VRunSoftYanlz/article/details/89390866
++++SteamVR2.2.0教程(一):https://blog.csdn.net/VRunSoftYanlz/article/details/89324067
++++SteamVR2.2.0教程(二):https://blog.csdn.net/VRunSoftYanlz/article/details/89894097
++++SteamVR_Skeleton_Poser:https://blog.csdn.net/VRunSoftYanlz/article/details/89931725
++++SteamVR实战之PMCore:https://blog.csdn.net/VRunSoftYanlz/article/details/89463658
++++SteamVR/Extras:https://blog.csdn.net/VRunSoftYanlz/article/details/86584108
++++SteamVR/Input:https://blog.csdn.net/VRunSoftYanlz/article/details/86601950
++++OpenXR简介:https://blog.csdn.net/VRunSoftYanlz/article/details/85726365
++++VRTK杂谈:https://blog.csdn.net/VRunSoftYanlz/article/details/82562993
++++VRTK快速入门(杂谈):https://blog.csdn.net/VRunSoftYanlz/article/details/82955267
++++VRTK官方示例(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82955410
++++VRTK代码结构(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82780085
++++VRTK(SceneResources):https://blog.csdn.net/VRunSoftYanlz/article/details/82795400
++++VRTK_ControllerEvents:https://blog.csdn.net/VRunSoftYanlz/article/details/83099512
++++VRTK_InteractTouch:https://blog.csdn.net/VRunSoftYanlz/article/details/83120220
++++虚拟现实行业应用:https://blog.csdn.net/VRunSoftYanlz/article/details/88360157
++++Steam平台上的VR:https://blog.csdn.net/VRunSoftYanlz/article/details/88960085
++++Steam平台热销VR:https://blog.csdn.net/VRunSoftYanlz/article/details/89007741
++++VR实验:以太网帧的构成:https://blog.csdn.net/VRunSoftYanlz/article/details/82598140
++++实验四:存储器扩展实验:https://blog.csdn.net/VRunSoftYanlz/article/details/87834434
++++FrameVR示例V0913:https://blog.csdn.net/VRunSoftYanlz/article/details/82808498
++++FrameVR示例V1003:https://blog.csdn.net/VRunSoftYanlz/article/details/83066516
++++SwitchMachineV1022:https://blog.csdn.net/VRunSoftYanlz/article/details/83280886
++++PlaySceneManagerV1022:https://blog.csdn.net/VRunSoftYanlz/article/details/83280886
++++Unity5.x用户手册:https://blog.csdn.net/VRunSoftYanlz/article/details/81712741
++++Unity面试题ABC:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++Unity面试题D:https://blog.csdn.net/VRunSoftYanlz/article/details/78630838
++++Unity面试题E:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity面试题F:https://blog.csdn.net/VRunSoftYanlz/article/details/78630945
++++Cocos2dx面试题:https://blog.csdn.net/VRunSoftYanlz/article/details/78630967
++++禅道[zentao]:https://blog.csdn.net/VRunSoftYanlz/article/details/83964057
++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818
++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502
++++Lua快速入门篇(基础概述):https://blog.csdn.net/VRunSoftYanlz/article/details/81041359
++++框架知识点:https://blog.csdn.net/VRunSoftYanlz/article/details/80862879
++++游戏框架(UI框架夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80781140
++++游戏框架(初探篇):https://blog.csdn.net/VRunSoftYanlz/article/details/80630325
++++.Net框架设计:https://blog.csdn.net/VRunSoftYanlz/article/details/87401225
++++从零开始学架构:https://blog.csdn.net/VRunSoftYanlz/article/details/88095895
++++设计模式简单整理:https://blog.csdn.net/vrunsoftyanlz/article/details/79839641
++++专题:设计模式(精华篇):https://blog.csdn.net/VRunSoftYanlz/article/details/81322678
++++U3D小项目参考:https://blog.csdn.net/vrunsoftyanlz/article/details/80141811
++++Unity小游戏算法分析:https://blog.csdn.net/VRunSoftYanlz/article/details/87908365
++++Unity案例(Vehicle):https://blog.csdn.net/VRunSoftYanlz/article/details/82355876
++++UML类图:https://blog.csdn.net/vrunsoftyanlz/article/details/80289461
++++PowerDesigner简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86500084
++++Unity知识点0001:https://blog.csdn.net/vrunsoftyanlz/article/details/80302012
++++Unity知识点0008:https://blog.csdn.net/VRunSoftYanlz/article/details/81153606
++++U3D_Shader编程(第一篇:快速入门篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372071
++++U3D_Shader编程(第二篇:基础夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372628
++++Unity引擎基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78881685
++++Unity面向组件开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78881752
++++Unity物理系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78881879
++++Unity2D平台开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78882034
++++UGUI基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78884693
++++UGUI进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78884882
++++UGUI综合:https://blog.csdn.net/vrunsoftyanlz/article/details/78885013
++++Unity动画系统基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78886068
++++Unity动画系统进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78886198
++++Navigation导航系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78886281
++++Unity特效渲染:https://blog.csdn.net/vrunsoftyanlz/article/details/78886403
++++Unity数据存储:https://blog.csdn.net/vrunsoftyanlz/article/details/79251273
++++Unity中Sqlite数据库:https://blog.csdn.net/vrunsoftyanlz/article/details/79254162
++++WWW类和协程:https://blog.csdn.net/vrunsoftyanlz/article/details/79254559
++++Unity网络:https://blog.csdn.net/vrunsoftyanlz/article/details/79254902
++++Unity资源加密:https://blog.csdn.net/VRunSoftYanlz/article/details/87644514
++++PhotonServer简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86652770
++++编写Photon游戏服务器:https://blog.csdn.net/VRunSoftYanlz/article/details/86682935
++++C#事件:https://blog.csdn.net/vrunsoftyanlz/article/details/78631267
++++C#委托:https://blog.csdn.net/vrunsoftyanlz/article/details/78631183
++++C#集合:https://blog.csdn.net/vrunsoftyanlz/article/details/78631175
++++C#泛型:https://blog.csdn.net/vrunsoftyanlz/article/details/78631141
++++C#接口:https://blog.csdn.net/vrunsoftyanlz/article/details/78631122
++++C#静态类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630979
++++C#中System.String类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630945
++++C#数据类型:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity3D默认的快捷键:https://blog.csdn.net/vrunsoftyanlz/article/details/78630838
++++游戏相关缩写:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++UnityAPI.Rigidbody刚体:https://blog.csdn.net/VRunSoftYanlz/article/details/81784053
++++UnityAPI.Material材质:https://blog.csdn.net/VRunSoftYanlz/article/details/81814303
++++UnityAPI.Android安卓:https://blog.csdn.net/VRunSoftYanlz/article/details/81843193
++++UnityAPI.AndroidJNI安卓JNI:https://blog.csdn.net/VRunSoftYanlz/article/details/81879345
++++UnityAPI.Transform变换:https://blog.csdn.net/VRunSoftYanlz/article/details/81916293
++++UnityAPI.WheelCollider轮碰撞器:https://blog.csdn.net/VRunSoftYanlz/article/details/82356217
++++UnityAPI.Resources资源:https://blog.csdn.net/VRunSoftYanlz/article/details/83155518
++++JSON数据结构:https://blog.csdn.net/VRunSoftYanlz/article/details/82026644
++++CocosStudio快速入门:https://blog.csdn.net/VRunSoftYanlz/article/details/82356839
++++Unity企业内训(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82634668
++++Unity企业内训(第1讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82634733
++++Unity企业内训(第2讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82861180
++++Unity企业内训(第3讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82927699
++++Unity企业内训(第4讲):https://blog.csdn.net/VRunSoftYanlz/article/details/83479776
++++Unity企业内训(第5讲):https://blog.csdn.net/VRunSoftYanlz/article/details/83963811
++++Unity企业内训(第6讲):https://blog.csdn.net/VRunSoftYanlz/article/details/84207696
++++钻哥带您了解产品原型:https://blog.csdn.net/VRunSoftYanlz/article/details/87303828
++++插件<Obi Rope>:https://blog.csdn.net/VRunSoftYanlz/article/details/83963905
++++计算机组成原理(教材篇):https://blog.csdn.net/VRunSoftYanlz/article/details/82719129
++++5G接入:云计算和雾计算:https://blog.csdn.net/VRunSoftYanlz/article/details/88372718
++++云计算通俗讲义:https://blog.csdn.net/VRunSoftYanlz/article/details/88652803
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz
--_--VRunSoft:lovezuanzuan--_--
--_--VRunSoft:lovezuanzuan--_--