C#中List<T>.sort中的委托方法

当需要对一个List数组中的成员进行排序时,可以用List.Sort()方法。但如果需要对List数组中成员进行统一处理后再排序时,使用foreach对数组进行修改并输出新数组未免过于麻烦。

如游戏中有多名敌人,我们使用Unity中的GetComponentsWithTag方法,将当前地图中的敌人存储到数组中。

	public List<Transform> EnemyTransform;

	void Start(){
		EnemyTransform=GameObject.GetComponentsWithTag("Enemy").transform;
		//将所有“Enemy”标签的物体的transform属性添加到EnemyTransform中
	}

然后我们需要将敌人与玩家的距离进行计算排序,方便玩家切换目标。

	public void EnemyTransformSort(){
		EnemyTransform.Sort(delegate(Transform T1,Transform T2)){
			Return (Vector3.Distance(T1.position,Player.transform.positon).Compareto(Vector3.Distance(T2.position,Player.transform.positon)));
		}
	}

也可以使用lambda表达式进行简写

	public void EnemyTransformSort(){
		EnemyTransform.Sort((Transform T1,Transform T2)=>
		Vector3.Distance(T1.position,Player.transform.positon).Compareto(Vector3.Distance(T2.position,Player.transform.positon)));	
	}

这种方法其实是使用了Comparison委托

	 public void Sort(Comparison<T> comparison);

该委托将对传入参数进行对比,如T1<T2则返回-1,T1>T2则返回1,相等返回0

.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值