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 ;
 }
Esempio n. 2
0
    // 創造防護罩相關物件
    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 ) ;
        }
    }