今天开始学习Unity官方的C#中级教程了
终于是回到学校啦,吃完一顿久违的粤饺皇就跑到一教A来啦,没想到这里已经有这么多卷人了嚯!
今日重点
1. 创建属性(字段)
- 属性的名称最好是变量的名称开头大写
- 属性相较于直接声明public的优势在于可以添加/删除get,set函数来达到只读或只写的目的;同时也可视作函数在访问时进行其他操作
2. 通用(泛型)
- 可以通过where来限制通用类型
- 可以创建泛用类
3.成员隐藏
- 意即在子类中对父类的成员变量进行重新声明
4. 接口(interface)
- 声明接口的名称时开头一般会有大写字母I,且一般以-able结尾,当然具体还是要根据接口的功能
- 接口用于跨多个类定义通用功能
5. 扩展方法
- 扩展方法必须放在一个非泛型静态类中,所以最好新建一个类来存放他们
6. 列表和字典
- 使用列表和字典需要添加
using System.Collections.Generic - 在类中定义List时应当注意方法
- List可以结合IComparable接口使用其自带的Sort()方法对任何对象进行排序
7. 协程
8. 四元数
9. 委托
- 使用delegate关键字创建委托
- 使用同一委托来调用不同的方法
- 使用+=来同时调用多个方法
10. 特性
- 通过特性可以直接对变量进行限制,而不需要用if等语句来进行限制
11. 事件
- 与公共多播委托相似
今日练习
求求你戳戳人家嘛
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
List<Badguy> badguys = new List<Badguy>(); //创建一个Badguy的列表
badguys.Add(new Badguy(1, "Adam")); //此处有疑问,为什么这两句放在类里面就不可以???
public interface IKillable //创建接口,这样其他类就可以引用该接口
{
void Kill();
}
public class StudyDay3 : MonoBehaviour
{
delegate void Delegate();
Delegate myDelegate;
[Range(-100,100)]public int speed; //通过添加特性直接对变量进行限制
private int experience;
public int Experience //声明一个属性,通过属性来访问私有成员
{
get
{
return experience;
}
set
{
experience = value;
}
}
public T GenericMethod<T>(T param) where T: struct //创建通用方法,后面的限制可以让T只能是值类型,同样可以添加其他限制,详情请查询
{
return param;
}
public int Health { get; set; } //这样可以自动完成
// Start is called before the first frame update
void Start()
{
transform.ResetTransform(); //注意,该扩展方法就属于transform类,因此可以直接调用,并且不需要参数
myDelegate = Space; //使用委托来代替Space方法
myDelegate();
}
// Update is called once per frame
void Update()
{
}
void Space()
{
}
}
public class InterfaceTest : MonoBehaviour, IKillable //引用并实现接口
{
public void Kill()
{
}
}
public static class ExtensionMethod
{
public static void ResetTransform(this Transform trans) //注意必须添加static,同时使用this来让它编程扩展方法而不是静态方法
{
//该函数的第一个参数即调用对象,因此在调用该函数时,无需提供参数
trans.position = Vector3.zero;
}
}
public class Badguy
{
int id;
string name;
public Badguy(int i,string n)
{
id = i;
name = n;
}
}
今日总结
今天看完了所有的C#中级编程的内容,当然,只是“看完“,基本上从协程开始就听得迷迷糊糊的了。但我也并没有深究,想到这些内容或许我会比较少用到,而用到的时候也可以针对该内容进行深挖。接下来我希望试试通过编写代码来完成点击GUI,生成物品的操作。
😉😉😉
阅读量
loading...