// 取得最大的武器清單,並依照排序 private List<string> RetrievePossibleWeaponListInOrder( UnitData _unitData , UnitWeaponSystem _weaponSys ) { List<string> ret = new List<string>() ; List<string> allWeapens = _unitData.GetAllWeaponComponentNameVec() ; List<string> realWeapons = new List<string>() ; // 剔除trackor beam foreach( string weapon in allWeapens ) { if( -1 == weapon.IndexOf( ConstName.UnitDataComponentWeaponTrackorBeamPrefix ) ) { // no trackor beam realWeapons.Add( weapon ) ; } } while( realWeapons.Count > 0 ) { // 找最遠的 float maxRange = -1 ; string maxRangeString = "" ; foreach( string weapon in realWeapons ) { float rangeThis = _unitData.componentMap[ weapon ].m_WeaponParam.m_Range ; if( rangeThis > maxRange ) { maxRange = rangeThis ; maxRangeString = weapon ; } } realWeapons.Remove( maxRangeString ) ; ret.Add( maxRangeString ) ; } return ret ; }