Unity3D入门:C#学习笔记与代码示例

5星 · 超过95%的资源 需积分: 49 16 下载量 186 浏览量 更新于2024-09-08 2 收藏 3KB TXT 举报
"C#学习笔记,适用于Unity3D中的C#初学者,主要涉及类、访问修饰符、接口、抽象类、调试工具等基础知识。" 在C#编程语言中,学习掌握基本概念对于构建游戏或其他应用程序至关重要。这篇学习笔记主要关注在Unity3D环境中使用C#的一些关键点。 首先,我们看到代码示例中提到了访问修饰符,包括`public`和`private`。`public`是可公开访问的,意味着其他类可以自由地调用或修改这个成员。而`private`则是私有的,只能在定义它的类内部访问。例如,`GetAge()`方法是公共的,可以从类外部调用来获取年龄,而`CheckAge()`方法是私有的,它被用于内部逻辑验证。 接着,我们看到了一个名为`Person`的类,其中`Age`属性有一个特殊的getter和setter。getter允许我们获取年龄,但在这里它返回的值比实际的`age`变量大10,setter则将传入的值减去10来设置`age`。这种设计可能是为了提供某种业务逻辑,比如年龄加10表示实际年龄的某种表示。 `interface`(接口)是C#中定义行为规范的关键元素,它定义了一组方法签名,但不包含实现。在例子中提到的`Iill`(可能是一个拼写错误,应为`IIll`或`IILL`),代表一个接口,类可以实现它来遵守接口定义的约定。例如,`Person`类可能需要实现一个行走(Walk)或咬人(Bite)的行为。 `abstract class`(抽象类)是不能直接实例化的类,它通常包含抽象方法(没有实现的方法)。抽象类可以作为其他类的基础,强制这些子类实现特定的方法。`abstract`和`interface`之间的区别在于,抽象类可以有方法实现,而接口则只能定义方法签名。 在Unity中,我们经常使用`Debug`类进行调试,如`Debug.Log`, `Debug.LogWarning`和`Debug.LogError`,它们分别用于输出信息、警告和错误到控制台。`Update`, `FixedUpdate`和`LateUpdate`是Unity中的时间驱动函数,它们在每一帧或每一步物理模拟中执行。`Time.deltaTime`提供了前一帧与当前帧之间的时间差,这对于基于时间的游戏逻辑非常有用。 此外,Unity的生命周期函数,如`Awake`和`Start`,都在对象初始化时调用。`Awake`是在对象被激活并准备运行之前调用,而`Start`则稍后在`Awake`之后调用。`Update`函数在每一帧都会调用,适合处理游戏逻辑;`FixedUpdate`用于物理模拟,确保物理行为在恒定的时间间隔内执行;`LateUpdate`则在所有`Update`之后调用,常用于动画调整等。 `GetComponent`方法是Unity中获取对象上特定组件的常用方法,如`Transform`组件。`Transform`包含了对象的位置、旋转和缩放信息。`Random`类用于生成随机数,是Unity开发中常用的工具。 这篇学习笔记涵盖了C#的基础语法、面向对象编程的概念以及Unity3D中的核心概念,是初学者了解C#在游戏开发中应用的良好起点。
2010-01-04 上传
C#中的各种名词: 常数:声明时用const修饰,是隐式静态类型 域:一个代表和某对象或类相关的变量的成员 字段:和属性相同,是用来存储对象的值,可以直接访问数据且不能对数据添加任何限制,但是属性不能且可以对数据添加访问限制。一个在类或结构的定义中声明的变量。可以被这个类或者结构的所有成员函数(方法、构造函数)使用,可以是值类型或引用类型,主要有实例字段和静态字段。区别于局部变量在于局部变量只能被给定的函数或代码块使用 属性:一种用于访问对象或类的特性的成员。属性的访问器是一种使属性可以像公共数据成员一样被使用的特殊方法(get/set方法)。属性结合了字段和方法的多个方面,对于对象的用户,它显示为字段;对于类的实现者,它是一个或两个代码块(用于表示get/set访问器)。写类的时候使用System.Serializable属性以便使类的成员可以序列化 方法:是一种用于实现可以由对象或类执行的计算或操作的成员。类的方法主要是和类相关联的动作,它是类的外部界面,对于那些私有的字段来说,外部界面实现对它们的操作一般只能通过方法来实现。方法在类或结构中声明,声明时需要制定访问级别、返回值、方法名称及方法参数。一个方法的签名由它的名称以及它的形参的个数、修饰符和类型组成。方法的签名是方法的唯一标识(同一个类中的区别标识)。 方法的重载:是指方法名相同,但参数类型、个数或顺序不同的方法,与返回值无关(同一类或子类之间) 方法的重写:子类对父类方法的重新实现(方法头相同,方法体即代码块不同) 事件:是使得对像和类提供通知的成员。一个类通过提供事件声明来定义一个事件,这看起来与域和事件声明相当类似,但是有一个event关键字。这个声明的类型必须是delegate类型。如下例子: public delegate void EventHandler(object sender, Event e); public class Button { public event EventHandler Click; public void Reset() { Click = null; } } 索引:是使得对象可以像数组一样被索引的成员 结构:一种值类型,几个数据组成的数据结构。向方法传递结构时,是通过传值方式传递的,结构实例化可以不用new,结构可以声明构造函数,但必须带参数,且声明的构造函数是用来对成员初始化的,必须包含每个字段。结构不能从另一个结构或类继承而来,但可以实现接口,结构中不能初始化实例。结构存储在栈中且只用来表示小的数据结构,类存储在托管堆中 类:是一种数据结构,是具有相同或相似结构、操作和约束规则的对象组成的集合。算法和数据结构的集合(对象),具有封装、继承、多态等特点。父类—基类、子类—派生类。类的多态是指不同的类进行同一操作可以有不同的行为。类是相同对象的集合,并为这些对象定义了编程语言上的属性和方法。类修饰符:new在类声明时使用,public公共的,访问不受限,protected只能从其所在类和所在类的子类中进行访问,internal只有其所在类才能进行访问,private私有的,abstract抽象类,不能实例化,sealed密封类,不能被继承 虚拟成员:声明为virtual的类成员 析构函数:以类名+~来命名的,不能有参数,不能有任何修饰符而且不能被调用。当某个类的实例被认为不再有效并符合析构条件时,.NET Framework类库的垃圾回收功能就会调用该类的析构函数实现垃圾回收,一个类只能有一个析构函数。一般准则是,除非有迫不得已的原因,不要使用析构函数,而应把清楚操作交给运行时完成 接口:声明的所有成员隐式的为public和abstract。在命名空间中声明的接口可以被授予public或internal访问类型。嵌套的接口可以被授予public、protected、internal、protected internal或private访问类型。默认为internal.接口的成员隐式的被声明为public和abstract访问类型且没有实现没有修饰符 密封类:密封类不能作为基类被继承,但可以继承别的类或接口,密封类中不能声明受保护的成员或虚成员,密封类不能声明为抽象的,声明密封类用sealed.密封方法只能用于对基类的虚方法进行实现,声明密封方法时同时使用sealed和override且必须通过重写基类中的虚方法来实现 名称空间:类似java中的包 集合: 代表: 访问修饰符:private、public、protected、internal:局部的 readonly:只读修饰符 new(新的)、static(静态的)、virtual(虚拟的)、override()、sealed(密封的)、abstranct(抽象的)、extern(外面的) 派生类调用基类的方法可以使用base关键字,如base.Method();