你上面给我的代码enemy.timer += Time.deltaTime; // 如果计时器超过3秒,进入巡逻状态 if (enemy.timer > 3f) { enemy.StartPatrolling(); }不可用,它说enemy.timer具有一定的保护级别
时间: 2024-03-22 13:39:02 浏览: 15
根据你提供的信息,这个错误是因为`enemy.timer`的访问级别被限制了,无法从当前的上下文中访问它。这通常是因为`enemy.timer`是私有的或受保护的。
解决这个问题的方法有两种:
1. 如果你有权限修改`enemy`类,可以将`timer`的访问级别改为`public`,这样它就可以从其他类中直接访问了。
2. 如果你无法修改`enemy`类,可以在`enemy`类中添加一个公共方法,用于返回`timer`的当前值。然后在当前类中调用这个方法来获取`timer`的值,而不是直接访问`enemy.timer`。
例如,你可以在`enemy`类中添加以下方法:
```
public float GetTimer()
{
return timer;
}
```
然后在当前类中使用以下代码来获取`timer`的值:
```
enemy.GetTimer() += Time.deltaTime;
if (enemy.GetTimer() > 3f)
{
enemy.StartPatrolling();
}
```
这样就可以避免访问级别的限制了。
相关问题
下列代码中enemy[i].Myunion.type == SAMLL是什么意思:if (enemy[i].hp == 0) { if (enemy[i].Myunion.type == SAMLL) { player.Myunion.score += 10 * SMALL_HP; } else if (enemy[i].Myunion.type == MEDIUM) { player.Myunion.score += 10 * MEDIUM_HP;}else{player.Myunion.score += 10 * BIG_HP;}enemy[i].flag = false;}}
enemy[i].Myunion.type == SAMLL是一个条件判断语句,用于判断当前处理的敌人的类型是否为小型敌人。在这段代码中,如果敌人的hp为0,即敌人被击中,那么根据不同的敌人类型,给玩家得分。如果当前敌人是小型敌人,那么玩家将得到10*SMALL_HP的分数;如果当前敌人是中型敌人,那么玩家将得到10*MEDIUM_HP的分数;如果当前敌人是大型敌人,那么玩家将得到10*BIG_HP的分数。最后,将敌人的flag设置为false,表示敌人已经被摧毁,不再需要进行碰撞检测。
下列代码中enemy[i].flag = false是什么意思:if (enemy[i].hp == 0) { if (enemy[i].Myunion.type == SAMLL) { player.Myunion.score += 10 * SMALL_HP; } else if (enemy[i].Myunion.type == MEDIUM) { player.Myunion.score += 10 * MEDIUM_HP;}else{player.Myunion.score += 10 * BIG_HP;}enemy[i].flag = false;}}
enemy[i].flag = false是将当前处理的敌人的标志位设置为false,表示敌人已经被摧毁,不再需要进行碰撞检测。在这段代码中,如果敌人的hp为0,即敌人被击中,那么根据不同的敌人类型,给玩家得分。然后将当前处理的敌人的标志位设置为false,表示敌人已经被摧毁。这样可以避免对已经被摧毁的敌人进行重复的检测,提高程序的执行效率。