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();    }
原创粉丝点击