c#初级编程-03

本文介绍了Unity编程中的基本数据类型,包括值类型与引用类型的概念,以及它们在修改时的影响。讲解了Instantiate函数用于运行时创建对象的克隆,数组的使用来管理同类型变量集合,以及Invoke和InvokeRepeating函数进行方法的延时调用。此外,还涵盖了枚举的运用和Switch语句的简洁选择判断。
摘要由CSDN通过智能技术生成

十八:数据类型

数据分为值类型与引用类型,值类型里包含某个值,引用类型包含值储存位置的储存地址,当值类型变化时,关联的其他数据受影响,当引用类型发生改变时,所有被改引用类型记录储存地址的数据都将受影响

        //值类型变量
        Vector3 pos = transform.position;
        pos = new Vector3(0, 2, 0);
        
        //引用类型变量
        Transform tran = transform;
        tran.position = new Vector3(0, 2, 0);

十九:Instantiate

通过instantiate可以在代码运行期间创建预制体的克隆体

instantiate(需要克隆的对象)

instantiate(需要克隆的对象,克隆出来时的位置,克隆出来时的旋转)

Instantiate(rocketPrefab, barrelEnd.position, barrelEnd.rotation) 

20:数组 

将同一类型的变量集合在一起方便管理,经常与for循环一起使用

    public GameObject[] players;
    void Start ()
    {
        players = GameObject.FindGameObjectsWithTag("Player");
        
        for(int i = 0; i < players.Length; i++)
        {
            Debug.Log("Player Number "+i+" is named "+players[i].name);
        }
    }

二十一:Invoke

Invoke、InvokeRepeating 和 CancelInvoke 函数可以延时调用方法

invoke("方法名",延迟时间),invoke只能调用不含参且返回值为void的方法

    public GameObject target;
    void Start()
    {
        Invoke ("SpawnObject", 2);
    }
    
    void SpawnObject()
    {
        Instantiate(target, new Vector3(0, 2, 0), Quaternion.identity);
    }

InvokeRepeating("方法名",延迟时间,再次调用时间),InvokeRepeating可以实现方法的重复调用

    public GameObject target;
    void Start()
    {
        InvokeRepeating("SpawnObject", 2, 1);
    }
    
    void SpawnObject()
    {
        float x = Random.Range(-2.0f, 2.0f);//x,z每次调用取随机值
        float z = Random.Range(-2.0f, 2.0f);
        Instantiate(target, new Vector3(x, 2, z), Quaternion.identity);
    }

CancelInvoke("方法名"),CancelInvoke可以停止InvokeRepeating的调用

CancelInvoke ("SpawnObject", 2); 

二十二:枚举

枚举可用于创建相关常量的集合,与数组不同,枚举可以理解为一个数值类型,并且可以实现相应的功能

    enum Direction {North, East, South, West};

    void Start () 
    {
        Direction myDirection;
        
        myDirection = Direction.North;
    }
    
    Direction ReverseDirection (Direction dir)
    {
        if(dir == Direction.North)
            dir = Direction.South;
        else if(dir == Direction.South)
            dir = Direction.North;
        else if(dir == Direction.East)
            dir = Direction.West;
        else if(dir == Direction.West)
            dir = Direction.East;
        
        return dir;  
    }

二十三:Switch 语句

switch语句功能与if/else语句功能相似,但switch更为精简,当面临的选择过多时,使用switch可以避免代码冗长,在每一选择完成后,需使用break返回;

      switch (intelligence)
      {
        case 5:
            print ("Why hello there good sir! Let me teach you about Trigonometry!");
            break;
        case 4:
            print ("Hello and good day!");
            break;
        case 3:
            print ("Whadya want?");
            break;
        case 2:
            print ("Grog SMASH!");
            break;
        case 1:
            print ("Ulg, glib, Pblblblblb");
            break;
        default:
            print ("Incorrect intelligence level.");
            break;
       }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值