前阵子我在Github上给Unity团队提了一个issue关于使用代码获取agentTypeID,说来惭愧是我自己的没找到对应的代码。在我使用另外渠道获取此ID的时候 Unity团队已经默默给我回复了这个issues.先说说我的解决方式,由于代码设置 agentTypeID 的时候需要给一个Int类型变量,这个变量其实是对应了一个枚举,我在UnityEditor Inspector的Debug窗口中直接获取了对应AgentTypeID. 笑. 本文记录我获得答复的过程,换个角度想想其实也能发现另外的解决方案即使不知道也没关系

解决方案

图中的代码如下

1
2
3
4
5
6
7
8
var count = NavMesh.GetSettingsCount();
var agentTypeNames = new string[count + 2];
for (var i = 0; i < count; i++)
{
var id = NavMesh.GetSettingsByIndex(i).agentTypeID;
var name = NavMesh.GetSettingsNameFromID(id);
agentTypeNames[i] = name;
}