【发布时间】:2018-08-08 21:32:51
【问题描述】:
Alight,我很抱歉这将是一个相当愚蠢的问题,但我正在努力全面了解对象的用途和用途。具体来说,我在 Unity 工作,但我不确定这是否重要。另外,我还应该提到,语言相当压倒性。但这是我正在处理的简单示例。
public class Player : MonoBehaviour
{
private string name = "Players Name";
private void Start () {
var nexus = new Player();
}
public static void Using() {
// how are these different?
Attack();
this.Attack();
}
public static void Move() {
print ("The player is moving");
}
private void Attack () {
print ("The player is attacking");
}
}
public class UsingStuff : MonoBehaviour
{
private void Start () {
Player.Move();
}
}
以下是问题:
- 调用函数 Attack() 与 this.Attack 有什么区别?从新手的角度来看,他们似乎在做同样的事情。但是,我假设我的示例过于简单了。
- 我使用随机名称 nexus 创建了 Player 类的对象。但是,当我从不同的类调用函数时,我似乎使用的是类名而不是这个变量名。那么创建变量名的目的是什么?
我现在将把它留在这两个方面,因为希望这将有助于解决一些其他事情的困惑。 感谢您的帮助。
【问题讨论】:
-
1) 在这种情况下没有区别。 2) 您需要对变量、属性和范围有基本的了解。您应该有一个在
Start()中实例化的Player类成员。相反,您正在创建一个播放器,然后将其丢弃,因为当Start()返回时它超出了范围。 -
对于#2,查看C# static vs instance methods 了解为什么有时需要类的实例(变量名)来调用方法,而其他时候只使用类名(用于静态方法)。
-
你应该有
Update功能它没有被使用,它的性能更差。此外,您不应将其包含在 Stack Overflow 帖子中,因为它与您的问题无关。 -
我建议您在尝试制作游戏之前花大量时间自学 C# 和核心编程概念。我花了很长时间才终于准备好参加比赛。现在,您正在同时学习非常复杂的事物,这阻碍了您对这两件事的学习。