private void SetState( TowerOfWhatState _Set )
	{
		if( _Set == m_State )
		{
			return ;
		}
#if DEBUG		
		Debug.Log( "SetState() " + _Set.ToString() ) ;
#endif		
		m_State = _Set ;
	}
	// 交換動畫
	private void AddSwap( int _index1 , int _index2 )
	{

		if( false == m_Units.ContainsKey( _index1 ) || 
			false == m_Units.ContainsKey( _index2 ) ||
			_index1 == _index2 )
			return ;

		
		GameObject obj1 = m_Units[ _index1 ] ;
		UnitData unitDat1 = obj1.GetComponent<UnitData>() ;
		GameObject obj2 = m_Units[ _index2 ] ;
		UnitData unitDat2 = obj2.GetComponent<UnitData>() ;
		
		if( null == unitDat1 || 
			null == unitDat2 )
			return ;
		
#if DEBUG		
		Debug.Log( "AddSwap() _index1 " + _index1  ) ;
		Debug.Log( "AddSwap() _index2 " + _index2  ) ;
#endif		
		// 交換 ( i , j )
		int tmp ;
		tmp = unitDat1.m_IndexI ;
		unitDat1.m_IndexI = unitDat2.m_IndexI ;
		unitDat2.m_IndexI = tmp ;
	
		tmp = unitDat1.m_IndexJ ;
		unitDat1.m_IndexJ = unitDat2.m_IndexJ ;
		unitDat2.m_IndexJ = tmp ;
				
		// 交換 m_Units[] 容器
		m_Units[ _index1 ] = obj2 ;
		m_Units[ _index2 ] = obj1 ;
		
		// add animation
		CloseTarget animScript = obj1.AddComponent<CloseTarget>() ;
		animScript.m_TargetPos = obj2.transform.position ;
		
		animScript = obj2.AddComponent<CloseTarget>() ;
		animScript.m_TargetPos = obj1.transform.position ;
		
		// 交換必轉移到此狀態
		m_State = TowerOfWhatState.Swap ;
	}