unity进阶教程合集Unity教程合集unity编程技术

Jtro的技术分享:Unity中使用泛型

2017-09-13  本文已影响315人  UnityPlane

泛型与结构体很像,都是复用一段代码。但是随着编程技巧的提升,结构体已经不能满足“优雅”的编程的需要了。所以泛型是最好的选择。

新建一个unity空工程,在里面新建一个空物体,在空物体上挂个脚本:Water

输入下面的代码:

using System.Collections;

using System.Collections.Generic;using

 UnityEngine;public class Water : MonoBehaviour {

// Use this for initialization

void Start () 

{

Fwatertest = new Fwater();//实例出一个泛型

test .info = "瓶装水";

Fwatertest1 = new Fwater();//实例出一个泛型

test1 .info = 5;

Debug.Log ("水的种类: "+test .info +" , "+"水的价格: "+test1 .info+"元");}//End of Start

 }

public class Fwater//泛型类

{

public T info;//水的信息,可以是任何种类

}

运行的结果

上面的就是最简单的泛型

下面的泛型可以是传多个,还可以限定泛型的类别:

新建一个工程:WaterPlus。新建一个空物体,新建一个WaterPlus脚本编写如下脚本

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class WaterPlus : MonoBehaviour

{

// Use this for initialization

void Start ()

 {

WaterplusClass < string , WaterBase> test = new WaterplusClass< string, WaterBase>();//实例一个test泛型

test.date = "2017.9.11";

test.info = new WaterBase ();test.info.zhonlei = "瓶装水";test.info.wendu = 20;

Debug.Log ("水的生产日期: "+test .date +" ,"+"水的种类: " +test .info .zhonlei+"水的温度: "+ test .info .wendu);

WaterplusClasstest1 = new WaterplusClass();//实例一个test1 泛型

test1.date = 20170911;

test1.info = new WaterBase ();

test1.info.zhonlei = "桶装水";

test1.info.wendu = 15;

Debug.Log ("水的生产日期: "+test1 .date +" ,"+"水的种类: " +test1 .info .zhonlei+"水的温度: "+ test1 .info .wendu);

}//End of Start

}

再新建一个脚本,不继承mono,编写如下脚本:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;//不继承mono

public class WaterplusClasswhere U : WaterBase //限定U只能接收waterbase类型的数据

{

public T date;//水的生产日期

public U info;//水的种类和价格

}

public class  WaterBase

{

public string zhonlei;

public int wendu;

}

运行之后:

运行结果

最后是泛型方法,同样是新建scene,新建空物体,新建脚本fxfangfa,编写如下脚本:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;public class FXFangFa : MonoBehaviour {

// Use this for initialization

void Start () {

Test test = new Test ();

string a =  test.Fx("FangXing");

int s =  test.Fx(12);Debug.Log (a + s);

}//End of Start 

// Update is called once per frame

void Update () {}//End of Update

}public class Test //类中的泛型方法{public T Fx(T t)

{

return t;

}

}

运行结果

好了泛型的使用就介绍这么多,感谢简书,感谢你的阅读。

上一篇 下一篇

猜你喜欢

热点阅读