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()
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?否则,您的代码看起来很好。