1.DOF_NUT_Develop_UI_Draw_2
上一节,我们了解了,UI_Draw读取三种数据类型的方法,来实现给UI界面传值的方式。
这一节,我们研究,如何通过这三种读取数据类型的方法,实现绘制obj各个信息参数的数据到界面上和实时检测obj各个信息参数。
实现效果:

function data_show(obj)
{
local stage = sq_GetGlobaludpModuleStage();//得到全局udp模块
local dungeon = sq_GetDungeonByStage(stage);//得到全局udp模块阶段的当前副本
local dungeonIndex = sq_GetDuegonIndex(dungeon);//得到当前副本的副本ID
local mapIndex = sq_GetMapIndex(stage);//得到得到全局模块阶段的当前地图ID
local skillIndex = obj.getThrowIndex();//得到释放技能ID
local attackIndex = obj.getAttackIndex();//得到obj攻击技能的ID,常常普攻时候使用
local buffSkillIndex = obj.getBuffSkillIndex();//得到obj的buff技能的ID
local throwState = obj.getThrowState();//得到obj释放技能的状态
local state = obj.sq_GetState();//得到obj的人物状态
local SubState = obj.getSkillSubState();//得到obj释放技能的子状态
local objectManager = obj.getObjectManager();//得到obj管理器
local objectcount=0;//设置默认对象数量为0
objectcount = objectManager.getCollisionObjectNumber();/用obj管理器去得到控制对象的个数
local AiCharacter = 0;//设置默认ai对象数量为0,
local Monster = 0;//设置默认怪物数量为0
local Character =0;//设置默认角色数量为0
local PASSIVE = 0;//设置默认被动对象数量为0
for(local i=0;i<objectcount;i++)//设置循环便利每一个obj对象
{
local object = objectManager.getCollisionObject(i);//通过obj管理器得到第i个控制类对象
if(object && obj.isEnemy(object) && object.isObjectType(OBJECTTYPE_MONSTER))
{//判断第i个控制类对象是否存在
//判断第i个控制类对象是否是敌人
//判断第i个控制类对象类型是否是怪物对象类型
Monster++;//如果以上三个条件都成立,怪物数量+1
}
else if(object && sq_IsAiCharacter(sq_GetCNRDObjectToActiveObject(object)))
//判断第i个控制类对象是否存在
//判断第i个控制类对象是否是AI对象
AiCharacter++;//如果以上两个条件都成立,AI对象数量+1
else if(object && object.isObjectType(OBJECTTYPE_PASSIVE))
{
//判断第i个控制类对象是否存在
//判断第i个控制类对象是否是被动对象
PASSIVE++;//如果以上两个条件都成立,被动对象数量+1
}
else if(object && object.isObjectType(OBJECTTYPE_CHARACTER)&&!sq_IsAiCharacter(sq_GetCNRDObjectToActiveObject(object)))
//判断第i个控制类对象是否存在
//判断第i个控制类对象是否不是AI对象
//判断第i个控制类对象是否是激活类对象
{
Character++;//如果以上三个条件都成立,玩家对象数量+1
}
}
bilixiaobai_addstringUI(obj,"obj"+" "+objectcount.tostring(),10,10,10,10,0);//将obj数量绘制到界面上
bilixiaobai_addstringUI(obj,"aicharacter"+" "+Character.tostring(),10,10,30,10,0);//将ai数量绘制到界面上
bilixiaobai_addstringUI(obj,"monster"+" "+Monster.tostring(),10,10,50,10,0);//将怪物数量绘制到界面上
bilixiaobai_addstringUI(obj,"passive"+" "+PASSIVE.tostring(),10,10,70,10,0);//将被动对象数量绘制到界面上
//bilixiaobai_addstringUI(obj,"mou_y_pos ",10,10,160,10,0);//将被动对象数量绘制到界面上
bilixiaobai_addstringUI(obj,"dgn_id"+" "+dungeonIndex.tostring(),10,10,180,10,0);//将副本ID绘制到界面上
bilixiaobai_addstringUI(obj,"map_id"+" "+mapIndex.tostring(),10,10,200,10,0);//将地图ID绘制到界面上
bilixiaobai_addstringUI(obj,"myweight"+" "+sq_GetObjectWeight(obj).tostring()+" myheight"+" "+sq_GetObjectHeight(obj).tostring()+" "+"mywidth"+" "+sq_GetWidthObject(obj).tostring(),10,10,220,10,0);//将我的重量,我的高度,我的宽度绘制到界面上
bilixiaobai_addstringUI(obj,"my_x_pos"+" "+sq_GetXPos(obj).tostring()+" mou_x_pos ",10,10,240,10,0);//将我的x坐标绘制到界面上
bilixiaobai_addstringUI(obj,"my_y_pos"+" "+sq_GetYPos(obj).tostring()+" mou_x_pos ",10,10,260,10,0);//将我的y坐标绘制到界面上
bilixiaobai_addstringUI(obj,"my_z_pos"+" "+sq_GetXPos(obj).tostring(),10,10,280,10,0);//将我的z坐标绘制到界面上
bilixiaobai_addstringUI(obj,"currentskill"+" "+obj.getCurrentSkillIndex().tostring()+" buffskill"+" "+buffSkillIndex,10,10,300,10,0);//将我的当前技能绘制到界面上
bilixiaobai_addstringUI(obj,"mystate"+" "+state.tostring()+" "+"attackindex"+" "+attackIndex.tostring()+" throwstate"+" "+throwState.tostring(),10,10,320,10,0);
//状态形式绘制到界面上
bilixiaobai_addstringUI(obj,"job"+" "+sq_getJob(obj).tostring()+" "+"growjob"+" "+sq_getGrowType(obj).tostring(),10,10,340,10,0);//职业和转职类型绘制到界面上
bilixiaobai_addstringUI(obj,"weapontype"+" "+obj.getWeaponSubType().tostring()+" "+"carryweapon"+" "+obj.isCarryWeapon(),10,10,360,10,0);//我携带的武器类型和是否携带武器信息绘制到界面上
bilixiaobai_addstringUI(obj,"udp type"+" "+sq_GetCurrentModuleType().tostring()+" teamstate"+" "+obj.sq_GetTeam(),10,10,380,10,0);//udp类型绘制到界面上
bilixiaobai_addstringUI(obj,"substate"+" "+SubState.tostring(),10,10,400,10,0);//子状态绘制到界面上
}