我不了解“的机制”;“变换”中的变换武器;统一C#码

我不了解“的机制”;“变换”中的变换武器;统一C#码,c#,unity3d,transform,C#,Unity3d,Transform,“转换中的转换武器”代码如何允许变体武器枚举武器父实例的所有子实例(如卡宾枪、猎枪) 代码: 父变换有3个子变换。你可以对它们进行迭代并停用所有不是“当前武器”的东西。听起来很简单。 但是将int武器索引与转换进行比较是行不通的 您应该使用传统的for循环,因为它提供了要比较的索引 int currentWeapon = 0 // the weapon you want to activate for(int i = 0; i < transform.childCount; i++) {

“转换中的转换武器”代码如何允许变体武器枚举武器父实例的所有子实例(如卡宾枪、猎枪)

代码:


父变换有3个子变换。你可以对它们进行迭代并停用所有不是“当前武器”的东西。听起来很简单。 但是将int
武器索引与转换进行比较是行不通的

您应该使用传统的for循环,因为它提供了要比较的索引

int currentWeapon = 0 // the weapon you want to activate
for(int i = 0; i < transform.childCount; i++)
{
    if (i == currentWeapon)
    {
        transform.getChild(i).gameObject.SetActive(true);
    }
    else
    {
        transform.getChild(i).gameObject.SetActive(false);
    }
}
int currentwearm=0//要激活的武器
for(int i=0;i
至于它如何/为什么能做到这一点

如果查看,您将看到它实现了接口

    public IEnumerator GetEnumerator()
    {
        return new Transform.Enumerator(this);
    }

    private class Enumerator : IEnumerator
    {
        Transform outer;
        int currentIndex = -1;

        internal Enumerator(Transform outer)
        {
            this.outer = outer;
        }

        //*undocumented*
        public object Current
        {
            get { return outer.GetChild(currentIndex); }
        }

        //*undocumented*
        public bool MoveNext()
        {
            int childCount = outer.childCount;
            return ++currentIndex < childCount;
        }

        //*undocumented*
        public void Reset() { currentIndex = -1; }
    }

私有变换;
...
对于(var i=0;i
或者如果您存储索引而不是

private int currentIndex;

...

for(var i = 0; i < transform.childCount; i++)
{
    var weapon = transform.GetChild(i);

    weapon.gameObject.SetActive(i == currentIndex);
}
private int-currentIndex;
...
对于(var i=0;i
转换是由其他武器(枪,…)继承的基类吗?@Arcord这是统一的,是附加到任何
游戏对象的内置组件
转换
是在
组件中实现的附属属性
;)谢谢你的帮助。谢谢你的回答。谢谢你的帮助。
for(var i = 0; i < transform.childCount; i++)
{
    var weapon = transform.GetChild(i);

    ...
}
private Transform currentWeapon;

...

foreach(Transform weapon in transform)
{
    weapon.gameObject.SetActive(weapon == currentWeapon);
}
private Transform currentWeapon;

...

for(var i = 0; i < transform.childCount; i++)
{
    var weapon = transform.GetChild(i);

    weapon.gameObject.SetActive(weapon == currentWeapon);
}
private int currentIndex;

...

for(var i = 0; i < transform.childCount; i++)
{
    var weapon = transform.GetChild(i);

    weapon.gameObject.SetActive(i == currentIndex);
}