需要一些解释才能理解此统一游戏教程中的 get 属性 代码
Needed some explanation to understand the get property code in this unity game tutorial
只是想知道这个脚本中的 get 属性 代码(最后)是否是一个 shorthand 代码,它说,如果 shootCooldown 小于或等于 0 那么 return 是吗?
如果是,那么这是编写 if 条件的另一种方式吗?对我来说,代码似乎是 returning 浮点值而不是布尔值。
完整代码贴在下面:
public class WeaponScript : MonoBehaviour
{
public Transform shotPrefab;
public float shootingRate = 0.25f;
private float shootCooldown;
void Start()
{
shootCooldown = 0f;
}
void Update()
{
if (shootCooldown > 0)
{
shootCooldown -= Time.deltaTime;
}
}
public void Attack(bool isEnemy)
{
if (CanAttack)
{
shootCooldown = shootingRate;
// Create a new shot
var shotTransform = Instantiate(shotPrefab) as Transform;
// Assign position
shotTransform.position = transform.position;
// The is enemy property
ShotScript shot = shotTransform.gameObject.GetComponent<ShotScript>();
if (shot != null)
{
shot.isEnemyShot = isEnemy;
}
// Make the weapon shot always towards it
MoveScript move = shotTransform.gameObject.GetComponent<MoveScript>();
if (move != null)
{
move.direction = this.transform.right; // towards in 2D space is the right of the sprite
}
}
}
public bool CanAttack
{
get
{
return shootCooldown <= 0f;
}
}
}
属性 的代码没有 return
的值
shootCooldown
但是表达式的结果
shootCooldown <= 0f;
解析为布尔值。
相当于写
if (shootCooldown <= 0f)
{
return true;
}
else
{
return false;
}
只是想知道这个脚本中的 get 属性 代码(最后)是否是一个 shorthand 代码,它说,如果 shootCooldown 小于或等于 0 那么 return 是吗?
如果是,那么这是编写 if 条件的另一种方式吗?对我来说,代码似乎是 returning 浮点值而不是布尔值。
完整代码贴在下面:
public class WeaponScript : MonoBehaviour
{
public Transform shotPrefab;
public float shootingRate = 0.25f;
private float shootCooldown;
void Start()
{
shootCooldown = 0f;
}
void Update()
{
if (shootCooldown > 0)
{
shootCooldown -= Time.deltaTime;
}
}
public void Attack(bool isEnemy)
{
if (CanAttack)
{
shootCooldown = shootingRate;
// Create a new shot
var shotTransform = Instantiate(shotPrefab) as Transform;
// Assign position
shotTransform.position = transform.position;
// The is enemy property
ShotScript shot = shotTransform.gameObject.GetComponent<ShotScript>();
if (shot != null)
{
shot.isEnemyShot = isEnemy;
}
// Make the weapon shot always towards it
MoveScript move = shotTransform.gameObject.GetComponent<MoveScript>();
if (move != null)
{
move.direction = this.transform.right; // towards in 2D space is the right of the sprite
}
}
}
public bool CanAttack
{
get
{
return shootCooldown <= 0f;
}
}
}
属性 的代码没有 return
的值shootCooldown
但是表达式的结果
shootCooldown <= 0f;
解析为布尔值。
相当于写
if (shootCooldown <= 0f)
{
return true;
}
else
{
return false;
}