C#游戏开发基础03
来源:互联网 发布:淘宝军用防毒面具价格 编辑:程序博客网 时间:2024/06/08 02:03
前言:继续补日记
方法
Unity默认提供了两个方法,带属性的
方法:独立的一个代码块。优点结构清晰,重复利用
常规书写
int a = 1; a++; a*=5; a+=3; a*=2;; Console.Writeline(a); int b = 2; b++; b*=5; b+=3; b*=2; Console.Writeline(b);//是否很多重复
方法书写
格式:类型 名称(属性 类似占位符){代码块}
1.参数
//声明变量 int a = 1; int b = 2; //------------------------------------------------------------------------------- //声明方法(如此类会有错误) void error(int i) { i++; i *= 5; i += 3; } //Unity默认方法(启动调用一次) void Start() { //调用方法运算a func(a); Debug.Log(a); } //void为空返回值,方法计算并没有赋值a,a打印结果还是1。方法里填的数值a只是输入a的数值去计算。 //声明的为实参,传入计算的为行参。 //------------------------------------------------------------------------------- //声明方法Calculation,返回类型int //可以传入默认值 int Calculation(int i =1)后面就不需要传入实参 int Calculation(int i) { i++; i *= 5; i += 3; //返回i return i; } //Unity默认方法(启动调用一次) void Start() { //调用方法运算a,赋值 a = Calculation(a); Debug.Log(a); //调用方法运算b,赋值 a = Calculation(b); Debug.Log(a); }
2.ref / out
ref :指针指向同意内存,直接改变a数值
//声明变量 int a = 1; int b = 2; //声明方法Calculation,无返回值。 void Calculation(ref int i) { i++; i *= 5; i += 3; } //Unity默认方法(启动调用一次) void Start() { Calculation(ref a); Debug.Log(a); Calculation(ref b); Debug.Log(b); }//out:内部必须需要初始化值,书写方式和ref 一样void Calculation(out int i) { //外部值就无效了。 i = 1; i++; i *= 5; i += 3; }//Unity默认方法(启动调用一次)void Start() { Calculation(out a); Debug.Log(a); Calculation(out b); Debug.Log(b); }
面向对象
面向过程:就是电脑的逻辑编写代码。
面向对象:就是按照人类思想编写代码。
注:把具有相同属性和行为的实例(如赛车)抽象出一个类(模具),就是面向对象。
类
需要注意访问修饰符
public //所有的 对象都可以访问 private //私有的 对象本身内部可以访问 protected //受保护,该类和子类对象可以访问 internal //同一个程序集中的对象可以访问
方法书写
声明格式:class 名字{}
//声明类 人 class Person{ //名字 public string Name; //等级 public int Grade; //职业 public string Occupation; //行为方法 public void Eat() { Debug.Log("行为"); }}
调用方法
void Start() { //实例化 小龙 Person xiaolong = new Person(); //名称 xiaolong.Name = "小龙"; //等级 xiaolong.Grade = 80; //职业 xiaolong.Occupation = "战士"; //行为方法调用 xiaolong.Eat(); }
//限制一些数值的合理性(等级等)
//声明类 人 class Person{ //名字 public string Name; //等级 private int grade; //限定 public void SetGrade(int value) { if (value > 99) { value = 99; } if (value < 1) { value = 1; } //赋值 grade = value; } //返回 public int GetGrade() { return grade; }}
void Start() { Person xiaolong = new Person(); //调用Set方法 xiaolong.SetGrade(190); //打印Get方法 Debug.Log(xiaolong.GetGrade()); }
属性(即上述面简写)
格式: 类型 名称{ set{} get{}}
//声明类 人class Person{ //名称 public string Name; //等级 private int grade; //等级限定 public int Grade { set//限定 { if (value > 99) { value = 99; } if (value < 1) { value = 1; } //赋值 grade = value; } get//返回值 { return grade; } }}
void Start() { //实例化 小龙 Person xiaolong = new Person(); //赋值等级 xiaolong.Grade = 200; //打印 Debug.Log(xiaolong.Grade); }
构造方法(初始化方法)& 析构方法
构造方法(new 实例化是调用)
析构方法(销毁时调用)
//声明类 人class Person{ //名字 public string Name; //等级 public int Grade; //构造方法 public Person() { Name = "初始无名"; Debug.Log("初始化..."); } //析构方法(销毁时) ~Person() { Debug.Log("销毁了..."); }}
void Start() { //实例化 小龙 Person xiaolong = new Person(); //小龙为空 xiaolong = null; }
构造方法,是一个方法所以也可以是传值的
//声明类 人class Person{ //名字 public string Name; //等级 public int Grade; //构造方法 public Person(string nama, int grade) { //赋值 Name = nama; Grade = grade; }}
void Start() { //实例化 小龙 Person xiaolong = new Person("小龙", 18); //打印 Debug.Log(xiaolong.Name); Debug.Log(xiaolong.Grade); }
构造方法是可以同名多个的,根据你调用时填入的数值选着。
//声明类 人class Person{ //名字 public string Name; //等级 public int Grade; //构造方法1 public Person(string nama, int grade) { //赋值 Name = nama; Grade = grade; } //构造方法2 public Person(string nama) { //赋值 Name = nama; }}
void Start() { //实例化 小龙 Person xiaolong = new Person("小龙", 18); //打印 Debug.Log(xiaolong.Name); Debug.Log(xiaolong.Grade); //实例化 小凤 Person xiaofeng = new Person("小凤"); //打印 Debug.Log(xiaofeng.Name); }
静态
静态是直接用类调用,普通的则是new对象调用。
在游戏里static 主要用在单例设计模式里面。
//声明类 静态测试class StaticTest{ //静态变量 public static int Type = 0; //静态方法 public static void Method() { Debug.Log("静态方法"); }}
void Start() { //赋值 int i = StaticTest.Type; //调用静态方法 StaticTest.Method(); }
阅读全文
0 0
- C#游戏开发基础03
- C#游戏开发基础01
- C#游戏开发基础02
- C#游戏开发基础04
- C#游戏开发基础05
- Unity3D游戏开发与c#基础
- 游戏开发教程c#
- 游戏开发基础(2)
- 游戏开发基础(3)
- 游戏开发基础(4)
- 游戏开发基础(5)
- 游戏开发基础(6)
- 游戏开发基础(7)
- 游戏开发基础(8)
- 游戏开发基础(9)
- 游戏开发基础(3)
- 游戏开发基础(4)
- 游戏开发基础(5)
- 使用CSDN-markdown编辑器的技巧
- 经典Mysql-cluster数据库集群搭建(windows)
- 人工智能、机器学习和深度学习三者的关系
- JMockit
- NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
- C#游戏开发基础03
- IOS UITabBar 隐藏分割线
- 协程(IEnumerator)的使用
- Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /var/www/html/php..解决方案
- 冒泡排序(C语言)
- Java中的Atomic包使用指南
- Eclipse 修改字符集
- Date日期的一些操作
- javaSE知识点--01(01JDK安装与命令行编译方式概述)