示例#1
0
 /// <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);
 }
示例#2
0
        /// <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>();
        }