一个for循环中的一些精灵渲染器在OnValidate()中没有变化

时间:2017-07-12 15:28:32

标签: unity3d unity5

我正在使用OnValidate()来帮助我加快设计过程。在下面的代码中(在OnValidate()中),如果严格的一个敌人拥有武器并且武器是剑或长矛,我会更改所有敌人的精灵(蓝色类型)。我有两个问题:

  1. 精灵渲染器在我运行应用程序之前不会改变,尽管代码在OnValidate()

  2. 即使我运行应用程序,也不是所有的Sprite Renderers都会改变。我用Debug.Log检查了数字,打印出正确的数字,但我一致的Sprite渲染器数量不会改变。

    if (enemies.Count (x => x.hasWeapon) == 1) {
    if (enemies.Count (x => x.weaponType == Enemy.WeaponType.Sword) == 1) {
        for (int i = 0; i < enemies.Length; i++) {
            if (enemies [i].enemyType == Enemy.EnemyType.Blue) {
                Debug.Log (enemies.Length);
                enemies[i].GetComponent<SpriteRenderer> ().sprite = Resources.Load<Sprite> ("Sprites/greenEnemy");
            }
        }
    }
    
    if (enemies.Count (x => x.weaponType == Enemy.WeaponType.Spear) == 1) {
        for (int i = 0; i < enemies.Length; i++) {
            if (enemies [i].enemyType == Enemy.EnemyType.Blue) {
                enemies[i].GetComponent<SpriteRenderer> ().sprite = Resources.Load<Sprite> ("Sprites/blueEnemy");
            }
        }
    }      
    }
    
  3. 我该如何解决这些问题?

0 个答案:

没有答案