Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d for循环中的某些sprite渲染器在OnValidate()中没有更改_Unity3d_Unity5 - Fatal编程技术网

Unity3d for循环中的某些sprite渲染器在OnValidate()中没有更改

Unity3d for循环中的某些sprite渲染器在OnValidate()中没有更改,unity3d,unity5,Unity3d,Unity5,我正在使用OnValidate()来帮助我加快设计过程。在下面的代码中(在OnValidate()中),如果一个敌人拥有武器,而武器是剑或矛,我会为所有敌人更改精灵(类型为蓝色)。我有两个问题: 尽管代码位于OnValidate() 即使在我运行应用程序时,也不是所有的Sprite渲染器都会更改。我用一个Debug.Log检查了这个数字,它打印了正确的数字,但是我始终没有更改Sprite渲染器的数量 if (enemies.Count (x => x.hasWeapon) == 1) {

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

  • 尽管代码位于
    OnValidate()

  • 即使在我运行应用程序时,也不是所有的Sprite渲染器都会更改。我用一个
    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");
            }
        }
    }      
    }
    
    if(敌方计数(x=>x.haswarm)==1){
    如果(敌人数(x=>x.weaponType==敌人.weaponType.剑)==1){
    for(int i=0;i<0.Length;i++){
    if(敌人[i].enemyType==敌人.enemyType.Blue){
    Debug.Log(Debug.Length);
    敌人[i].GetComponent().sprite=Resources.Load(“精灵/greenemy”);
    }
    }
    }
    if(敌人数(x=>x.weaponType==敌人.weaponType.Spear)==1){
    for(int i=0;i<0.Length;i++){
    if(敌人[i].enemyType==敌人.enemyType.Blue){
    敌人[i].GetComponent().sprite=Resources.Load(“精灵/blue敌方”);
    }
    }
    }      
    }
    

  • 我如何解决这些问题?

    您能否确认您的文件夹已设置为资源文件夹,如:资产/资源/精灵/greenEnemy@ryemoss是的,这条路是对的。7个敌人中有4个总是更换新的精灵,而其余的精灵从不更换在运行应用程序之前,在inspector中没有更改的3个敌人有什么不同吗?如果将调试直接移动到for循环中,它会打印7、7次吗?我还注意到您在这两个语句中都检查了敌方.EnemyType.Blue,是否其中一个是敌方.EnemyType.Green?否则,您的代码看起来很好。