一开始学习 unity 的时候,我们可能对 C# 还不是很了解,不太清楚它的一些深层次的概念。不过没关系,我们可以在学习的过程中逐步了解。
代码来源:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private CharacterController player;
// Start is called before the first frame update
void Start()
{
player = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
// 水平轴
float horizontal = Input.GetAxis("Horizontal");
// 垂直轴
float vertical = Input.GetAxis("Vertical");
// 创建成一个方向向量
Vector3 dir = new Vector3(horizontal, 0, vertical);
Debug.DrawRay(transform.position, dir, Color.red);
}
}
Unity 中的脚本是什么
Unity 中的脚本不是独立存在的,它其实是整个项目中的一些“插件”,依附于 Unity 的核心而存在。
Unity 已经替我们引用了 UnityEngine.dll
库文件,帮我们把自己写的代码和游戏中的其他对象关联起来。
using
using 是使用命名空间。命名空间就相当于类、变量的“姓”,它是名字的一部分,在语义上表示它属于谁,但并没有实质性的功能。
public class PlayerController : MonoBehaviour
它是一个类的定义,类似于 C++。
这个类的名字是 PlayerController,继承自 MonoBehavior 类。
这个类的继承方法是 public, 也就是说它会保留父类属性和方法的可访问性。
private CharacterController player;
这里声明一个 CharacterController 类的对象,名字是 player。
private 表示这是 PlayerController 类的一个私有属性。
player = GetComponent<CharacterController>();
这个代码的完整含义其实是 this.gameObject.GetComponent<CharacterController>();
。
GetComponent 是 MonoBehavior 类的一个方法,因此我们在这里可以直接使用它。而这个方法实际上指向的是 this.gameObject
(也就是这个类挂载到的游戏对象)拥有的 GetComponent 方法。
<CharacterController>
则是给这个泛型方法输入一个类型,让他去找这个类型的对象。
*此评论已经过编辑*
reply test