将gameobject设置为最小值无效

时间:2017-02-01 17:59:54

标签: c# unity3d

我似乎无法找到答案,我相信现在不可能做到。

我有一个收集游戏对象的玩家,当收集游戏对象时,他们会成为玩家的孩子。所有游戏对象都有一个质量不同的刚体,但重复的游戏对象具有相同的质量偏离。

当收集游戏对象时,玩家会大量增加。

我想要做的是当玩家达到一定质量并收集另一个游戏对象时,我希望质量最小的游戏对象设置为无效。

我已经知道了:

                     Component[] objects = GetComponentsInChildren(typeof(Rigidbody), false);
                     foreach (Rigidbody joint in objects)
                     {
                         float smallest = Mathf.Min(joint.mass);
                         if (smallest <= mass / 100 && joint.gameObject.activeInHierarchy)
                         {
                             int i = 0;
                             bool plus = false;
                             while (i < transform.childCount)
                             {
                                 if (transform.GetChild(i).gameObject.activeInHierarchy && plus == false)
                                 {

                                     transform.GetChild(i).gameObject.SetActive(false);
                                     Debug.Log("disabled");
                                     plus = true;
                                 }

                                     i++;
                             }
                         }
                     }

这将玩家的第一个儿童游戏对象设置为达到一定质量后无效。

但这不是我真正想要的,我想让最小质量的游戏对象设置为无效,但我无法转换&#34; float smallest = Mathf.Min(关节。质量);&#34;回到游戏对象。

这可能实现还是不可能?

1 个答案:

答案 0 :(得分:4)

当然有可能是我的朋友

using System.Linq // < --- at top of script

List<Rigidbody> objects = GetComponentsInChildren<Rigidbody>(false)
    .OrderBy(i => i.mass)
    .ToList();
Rigidbody smallest = objects.FirstOrDefault();