小编Sni*_*nik的帖子

Unity如何与C#类一起使用

通过研究纯C#,我发现Unity中的脚本(使用C#)有点不直观.

例如,似乎人们(初学者?)在Unity中使用脚本的最常见方式是创建"单一用途"类型脚本并将其附加到实际游戏对象(通过单击并将其拖动到脚本组件).以这种方式,似乎很少用于继承.或许我倒退了.我应该在附加到游戏对象之外创建类/继承,然后只将脚本附加到引用那些外部类的游戏对象吗?我相信你们中的一些人可能只会说"做你想做的事!" 或"做什么有效",但我不想从糟糕的编码方法开始,只是为了最后重构它.

我很困惑的另一件事是Unity中的类实例.无论出于何种原因,似乎我可以使用像Animator这样的内置类而无需实例化它[我几乎从未见过一个=新的Class(); ]然而这些类不是静态的.这是如何运作的?如果我构建自己的游戏对象引用的类,我是否必须创建与它们一起工作的实例,或者这一切都是由引擎在引擎盖下完成的吗?

所有这些脚本中的游戏对象(编辑器中的实际项目)在哪里?是否有为每个游戏对象制作的类?而且,如果是这样,我如何找到它并偷看它发生了什么?

c# unity-game-engine

7
推荐指数
1
解决办法
1720
查看次数

使用C#在Unity中调用非实例化的非静态方法

我正在使用Unity并使用一个包含C#代码的官方教程,其形式如下所示:

public class P1_ActionController : MonoBehaviour 
{

  void FixedUpdate() 
  { 
   if (move > 0 && !facingRight) 
    {
     Flip();
    }
  }

  void Flip() 
  {
    //blah blah, something unimportant goes here.
  }

}
Run Code Online (Sandbox Code Playgroud)

我的问题是,FixedUpdate()方法如何能够直接调用Flip()方法?我认为只有静态方法可以在没有实例化的情况下使用,但显然Flip()不是静态方法.

此外,在同一代码块中的相关难题是这一行:

        rigidbody2D.AddForce(new Vector2(0,jumpForce));
Run Code Online (Sandbox Code Playgroud)

因为在Vector2()方法上调用'new'关键字,究竟是Vector2()实例化了吗?

c# unity-game-engine

0
推荐指数
1
解决办法
737
查看次数

标签 统计

c# ×2

unity-game-engine ×2