unity的组件是 unity开发的脚本,本质上和我们写的脚本是一样的
所以二者冲突,发生抖动
//设定一个box..2D的小狗变量,然后就可通过.把对应的组件里东西点出来
//BoxCollider2D dog = GetComponent<BoxCollider2D>();
//GetComponent是获取组件的意思,<>里填组件类型
//静态方法使用:类名. 方法名
//普通方法 / 变量方法:对象名. 方法名
静态方法就是和程序生命周期同生共死,随时使用的
unity的组件是 unity开发的脚本,本质上和我们写的脚本是一样的
所以二者冲突,发生抖动
//设定一个box..2D的小狗变量,然后就可通过.把对应的组件里东西点出来
//BoxCollider2D dog = GetComponent<BoxCollider2D>();
//GetComponent是获取组件的意思,<>里填组件类型
//静态方法使用:类名. 方法名
//普通方法 / 变量方法:对象名. 方法名
静态方法就是和程序生命周期同生共死,随时使用的
在函数外定义的为全局变量,以下的函数都可以访问到
GetComponet方法,可以获取到组件,
初始化,+GetCompoent<组件名称>
静态方法与普通方法的区别:
①静态方法 -> 无实例
格式:类名.变量名
EX: Input.GetAxis("verticle");
优点:可以全局访问
②普通方法(成员变量方法)
格式:实例对象.方法名(参数)
EX: rigidbody2d.MovePosition(position);
优点:可以指定对象
获取组件属性
自定义变量名 获取组件<组件类型>();
抖动原因:开发者的物理系统的源代码与我们写的代码冲突
ans:
获取物理系统中的变量并使用
回弹原因:自定义的移动与刚体移动冲突
解决:使用刚体自带的移动方法
静态方法(在Untiy中已经被Untiy开发者开发好了我们可以只接去调用它无需添加组件)可以在其它的脚本中去使用它无需添加组件。
普通方法 (要我们给挂上脚本的物体去添加一个物体然后在脚本中去取的这个添加好了的物体)必需的在要取的这个组件的物体上去添加要取得的组件。
1、静态方法
class.function
优点:可以全局使用,每个脚本都可以使用
2、普通方法
object.function
不能全局使用,且需要该对象的实例(obiect)
静态方法是全局的,系统自带的。
普通方法是局部,是赋值之后,在局部使用。
Rigidbody2D 是Unity的类,类似于外部库,不是VS2022自带的类,而input是VS2022自带的类,可以全局调用。
所以Rigidbody2D需要先全局声明,赋值给rigidbody2D。然后在局部内使用。
疑问是如果不赋值给rigidbody2D,在局部是不能使用的,是不是必须全局才能识别外部库,局部是识别的不了的。只能通过赋值。
运动方法造成不同的影响
private Rigidbody2D rigidbody2d;
这一行声明了一个私有的Rigidbody2D类型的变量`rigidbody2D`,它将用于引用游戏对象上的Rigidbody2D组件。
rigidbody2d = GetComponent<Rigidbody2D>();
这一行通过调用`GetComponent<Rigidbody2D>()`方法来获取游戏对象上的Rigidbody2D组件,并将其赋值给前面声明的`rigidbody2D`变量。这样,就可以在后续代码中使用`rigidbody2D`来访问和操作Rigidbody2D组件。
rigidbody2d.MovePosition(position);
这一行使用Rigidbody2D的`MovePosition`方法来移动游戏对象到指定的位置`position`。`position`是一个Vector2类型的变量,用于指定游戏对象应该移动到的目标位置。
在编程中,静态方法和普通方法是两种不同类型的方法,它们在定义、调用和用途上有一些重要的区别。
普通方法(Instance Methods):
1. 定义:普通方法是属于对象实例的,它们需要通过对象实例来调用。每个对象实例都有自己的一组普通方法。
2. 调用:要调用普通方法,必须首先创建类的一个对象实例,然后使用该实例来调用方法。
3. 用途:普通方法通常用于对象的状态和属性,它们可以访问和修改对象的字段、属性和成员变量。这些方法可以对特定对象执行操作。
4. 示例:
GetComponent方法(普通方法): 在Start
方法中,GetComponent
方法,它是一个普通方法。它需要在游戏对象实例上调用,并通过对象实例来获取组件。获取一个Rigidbody2D组件并将其分配给了rigidbody2d
变量。
rigidbody2d = GetComponent<Rigidbody2D>();
静态方法(Static Methods):
1. 定义:静态方法是属于类本身的,它们不依赖于类的对象实例。可以直接通过类名称来调用静态方法。
2. 调用:静态方法可以直接使用类名称来调用,而无需创建对象实例。
3. 用途:静态方法通常用于不需要访问对象状态的操作,或者在多个对象实例之间共享相同行为的操作。它们可以用于工具方法、数学函数、单例模式等场景。
4. 示例:
Input.GetAxis方法(静态方法): 在Update
方法中,使用了Input.GetAxis
方法,它是一个静态方法。可以直接使用Input
类的名称来调用该方法,而无需创建Input
类的对象实例。
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");