public ComponentDataSet( ComponentDataSet _src ) { ComponentName = _src.ComponentName ; m_UnitObject.Setup( _src.m_UnitObject ) ; m_Component3DObject.Name = _src.m_Component3DObject.Name ; m_Effect3DObject.Name = _src.m_Effect3DObject.Name ; }
// 創造防護罩相關物件 public void CreateShields() { Dictionary< string , ComponentDataSet > _ShieldSet = this.m_ShieldDataSet ; _ShieldSet.Clear() ; // find all shield List<string> allShieldVec = this.GetAllShieldComponentNameVec() ; foreach( string eShield in allShieldVec ) { ComponentDataSet newShield = new ComponentDataSet( this.gameObject , eShield ) ; UnitComponentData componentData = this.componentMap[ eShield ] ; // create corresponding 3D shield string TemplateName = ConstName.CreateComponent3DObjectTemplateName( eShield ) ; string shield3DObjName = ConstName.CreateComponent3DObjectName( this.gameObject.name , eShield ) ; GameObject shield3DObj = PrefabInstantiate.Create( TemplateName , shield3DObjName ) ; if( null == shield3DObj ) { Debug.Log( "CreateShields() : null == shield3DObj" ) ; continue ; } // a short cut to component param componentData.m_ComponentParam.m_Component3DObject.Setup( shield3DObj ) ; newShield.Component3DObject = shield3DObj ; Vector3 localposition = shield3DObj.transform.position ; Quaternion localrotation = shield3DObj.transform.rotation ; shield3DObj.transform.parent = this.transform ; shield3DObj.transform.localPosition = localposition ; shield3DObj.transform.localRotation = localrotation ; // create shield effect object by shield3DObj { string shieldEffectTemplateName = "" ; shieldEffectTemplateName = componentData.m_ComponentParam.m_Effect3DObjectTemplateName ; string shieldEffectObjName = ConstName.CreateComponentEffectObjectName( this.gameObject.name , eShield ) ; GameObject effectObj = PrefabInstantiate.CreateByInit( shieldEffectTemplateName , shieldEffectObjName , shield3DObj.transform.position , shield3DObj.transform.rotation ) ; if( null == effectObj ) { Debug.Log( "null == effectObj" ) ; continue ; } newShield.Effect3DObject = effectObj ; effectObj.transform.parent = shield3DObj.transform ; Renderer [] renderers = effectObj.GetComponentsInChildren<Renderer>() ; foreach( Renderer e in renderers ) { e.enabled = false ; } } _ShieldSet.Add( eShield , newShield ) ; } }