/// <summary> /// 获取部件对应的根节点模型对象 /// </summary> /// <param name="unit"></param> /// <returns></returns> private Transform GetModelObjectWithUnit(Transform unit) { foreach (var NodeKV in m_NodeDataDic) { SpliteModelNode spliteModelNode = NodeKV.Value;//根节点 foreach (var unitKV in spliteModelNode.UnitOriginDataDic) { UnitData unitData = unitKV.Value; if (unitKV.Value.nodeTransform == null) { //可能应该删掉这条记录 Debug.LogError("SpliteTool.GetModelObjectWithUnit(): 模型中一部分被删除了!"); } if (unit == unitData.nodeTransform) { return(spliteModelNode.transform); } } } return(null); }
/// <summary> /// 先调用此函数设置模型数据,再进行其他操作。会创建一个SpliteModelNode脚本挂载到modelObject物体上。 /// </summary> /// <param name="camera">照相机</param> /// <param name="modelObject">当前操作的模型对象</param> /// <param name="units">能被分离的部件列表</param> public void SetObjectAndInfo(Camera camera, Transform modelObject, Transform[] units) { if (null == camera || null == modelObject || null == units) { return; } SpliteModelNode node = null; if (!modelObject.GetComponent <SpliteModelNode>()) { node = modelObject.gameObject.AddComponent <SpliteModelNode>(); } else { node = modelObject.gameObject.GetComponent <SpliteModelNode>(); } node.SetNodeInfo(camera, units); m_NodeDataDic[modelObject] = node; splitPartCount = units.Length; alreadyRestoreObjs = new List <Transform>(); }