• Unity3D学习笔记(三) 数组和容器(泛型)使用学习(基于C#)


    (2012-07-07 23:26:11)

    1.使用C#的List等容器前要头文件using System.Collections.Generic;
    容器:(声明--容器实例化--元素实例化--元素入容器)
    声明:public List<Transform> goals;
    容器实例化:goals=new List<Transform>();
    使用:goals.Add(enemy);  //添加到List末尾,enemy作为元素也是要先实例化的
          goals[0];          //获取List索引位置的元素
          goals.Count;      //变量,得到List元素个数
          goals.Clear();    //释放List的元素,设置Count=0
     
    /*

    注意!作为public List<WeaponData> weaponData中的类WeaponData,必须是public的,否则常会有权限错误的提示:(貌似是容器实例的权限和容器模板类的权限必须遵循一定高低关系)Inconsistent accessibility: field type `System.Collections.Generic.List<DataBase.WeaponData>' is less accessible than field `DataBase.weaponData'。其中weaponData为DataBase文件DataBase类的变量,Weapon为DataBase文件另一个类.

    其余详情可以查阅msdn对于System.Collections.Generic 命名空间中List的解释:(和Unity3D中类似)http://msdn.microsoft.com/zh-cn/library/0sbxh9x2

    */
    数组:(声明--数组实例化--数组元素实例化)
    声明: private Skill[] _skill;
    数组实例化:_skill=new Skill[Enum.GetValues(typeof(SkillName)).Length];
    元素实例化:for (int cnt = 0; cnt < _skill.Length; cnt++)
                   _skill[cnt] = new Skill();
    ①另外可以声明数组后,利用函数返回值进行数组实例化,而且此时
          GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
    ②使用方式可以如:
          foreach (GameObject enemy in go) {   }
    ③数组属于Array类,本身也有一些属性,如_skill.Length;可以获取数组长度。
    ④函数传递数组时,形参用(Skill[] new_skill)即可(内部用new_skill.Length获取长度)。改变函数内形参的值,实参数组也会跟着改变。
     
    2.无论是数组还是容器亦或者其它变量,都可以在MonoBehaviour子类中以public权限声明后,不在脚本内实例化,而是在Unity3D软件的检视面板中赋值实现实例化。
      对于GameObject,Texture2D等类型的变量(或数组以及容器),一般都是在检视面板赋值。(但GO类型也可以用寻找GO等函数实例化,Texture2D类型则可以用C#硬盘读取图片的方式赋值)

  • 相关阅读:
    关于MFC消息的总结
    关于VS中包含库、附加包含库、
    关于MFC中重载函数是否调用基类相对应函数的问题
    关于子窗口处理自身消息而不扩散给父窗口的问题
    进程与线程理解-1
    程序设计思想-2
    线程与进程
    网路编程之socket与 socketserver、黏包
    网络编程之TCP协议与UDP协议
    网络编程基础
  • 原文地址:https://www.cnblogs.com/mzdbskipop/p/3137565.html
Copyright © 2020-2023  润新知