现在的位置: 首页 > 综合 > 正文

Unity3d知识总结-C#使用1

2018年05月23日 ⁄ 综合 ⁄ 共 1867字 ⁄ 字号 评论关闭


Unity3d知识总结-C#使用1

本文为自学总结内容,如有错误请指出,多谢。

一:自定义类。

unit3d中创建自定义类,不要继承MonoBehavior类。可以在脚本开头声明自定义类。要被实例化的自定义类要声明为public类型。要调用的成员变量或成员方法要被定义成public型,也可以通过private修饰进行封装并通过创建共有的方法对外提供获取被封装的属性。实例代码如下:

Test1.cs脚本(脚本名与继承自Monobehavior的类名必须相同,否则编译失败)

1.

//要创建的对象的类必须是public型。对象能调用的是public类型修饰的成员。

public class Person{

 privatestring name;

 publicint age = 25;

//static可以通过类名直接访问,但要在调用的类中或脚本中首先声明其类型。

 publicstatic int moeny = 25000;

//必须对需要被创建对象的类写空构造函数,不写会报错显示缺少构造函数constructor……  

public Person(){}

 publicPerson(string name)

 {

    this.name= name;

 }

//定义该方法为虚方法,可以在子类中对其进行功能重写

public virtual string getName()

 {

       returnname;

 } 

}

2.

//定义继承自Person的子类Man

public class Man : Person{

 publicstring iD = "001";

 publicMan(){}//空构造函数

//定义该方法被子类重写

 publicoverride string getName(){

    returniD;

 }

 publicvoid setName(string name){

    this.iD= name;

 } 

}

3.创建继承自MonoBehavior类的子类。

public class Tes1 : MonoBehaviour {

 /*在同一脚本组件中创建类的实例化对象方法:

  *
创建对象步骤:

  * 1.首先声明该类。

  * 2.Start方法中创建对象,并使用类引用指向对象。(因为Start方法是unity为初始化数据提供的方法,也可以在其他地方创建对象)

  * 3.使用对象的句柄调用对象属性。(private不可以)

  *

  * */

 publicGUIText myText;

 publicPerson man;//声明父类型的引用

 publicMan boy1;//声明继承自Person的子类的类型引用

 voidStart () {

//对象初始化,必须手动创建要创建对象的类的空构造函数。

    man= new Person("创建Person的对象,并初始化为:小强");

    boy1= new Man();

    boy1.setName("继承Person的类Man小刚");//调用Man类中的方法。

 }

 

 //Update is called once per frame

 voidUpdate () {

myText.text = man.getName()+"。父类Person的对象age"+man.age+"。父类Person的对象moeny"+Person.moeny;

 Debug.Log(""+boy1.getName()+"年龄:"+man.age+"收入:"+Person.moeny);

 }

}

3.建立一个脚本名为Test2.cs

using UnityEngine;

using System.Collections;

/**

 *包含父类的.cs文件即使与创建对象的脚本文件不在同一目录下,子类也能访问父类文件,只要父类是共有的,在未被使用的情况下也可以使用(未使用到场景中)。

 *

 * */

public class Test2 : MonoBehaviour {

 publicPerson me;//声明定义在Test1中的类类型引用

 publicMan boy; //声明定义在Test1中的类类型引用

 voidStart () {

    me= new Person("lucy");//创建类的对象

    boy= new Man();

    boy.setName("大壮");//调用实例化对象的方法。

 }

 

 voidUpdate () {

 Debug.Log("Test2脚本中创建Person的对象大壮:"+me.age+me.getName()+boy.getName());

 }

}



抱歉!评论已关闭.