Unity ref 和out、 params的使用

相信很多刚接触C#或者unity的同学,都会看到很多这样那样的函数,带有ref ,out 或者params的参数,今天我就来讲一讲这三者的使用和区别:

ref

直接来看看实现的代码

  public void UpdateScore(ref int  score)
    {
        score = UnityEngine.Random.Range(80, 100);
    }

我使用unity在start里面调用测试

   void Start()
    {
        int myscore = 60;
        UpdateScore(ref myscore);
        print(myscore);



    }

看看打印结果:

有C语言或者C++基础的同学可能看出来了,这不就像C语言的指针变量吗?是的,这跟指针变量差不多,其实这是C#的参数引用传递,在方法中对参数所做的任何更改都将反映在该变量中

什么时候使用ref关键字呢

我理解:有时候我们不需要执行完这个方法就可以改变参数的值,或者想要改变的参数值比较多的时候

out

看看代码实现:

 public void GetScore(out int score)
    {
        score = UnityEngine.Random.Range(80, 100);
    }

调用

    void Start()
    {
        int score;
        GetScore(out score);
        print(score);



    }

结果:

其实out跟ref编译原理是一样的,区别就是ref需要先初始化值,而out不需要,总结起来就是ref 有进有出,out只出不进

out什么时候使用呢

我理解:用在没有返回值的函数就能返回值,例如在返回值是void的函数就能返回,还有就是我们经常使用的都是返回一个值的,那么我们如果想在一个函数中返回多个值呢?那么out就起作用了,我们可以使用out返回多个值

 

params

看看代码实现

   public void Getdd(params int[] pp)
    {
        foreach (var p in pp)
        {
            print(p);
        }
    }

调用

   void Start()
    {
       Getdd(1,2,3);



    }

结果:

是不是感觉有些不同,我们以往传递数组的时候,是不是不是这样传递的,params是为动态数组而准备的,我们直接输入数组的元素就行了,如果不加params,我们只能这样调用

    public void Getdd( int[] pp)
    {
        foreach (var p in pp)
        {
            print(p);
        }
    }

 void Start()
    {
       Getdd(new []{1,2,3});
    }

希望大家好好理解一下,也可以多看看unity系统函数,加深理解,这一篇完毕,如果对大家有用,关注或者点赞我

 

 

### 回答1: 在Unity中,params关键字用于表示一个可变参数列表。使用params关键字可以让开发者在调用方法时传递任意数量的参数,而不需要预先定义参数列表的大小类型。 下面是一个使用params关键字的示例: ``` public class Example : MonoBehaviour { void Start() { PrintValues(1, 2, 3, 4, 5); } void PrintValues(params int[] values) { foreach (int value in values) { Debug.Log(value); } } } ``` 在上面的示例中,我们定义了一个PrintValues方法,该方法使用params关键字定义一个int类型的可变参数列表values。在方法体中,我们使用foreach循环遍历该列表,并打印出每个参数的值。在Start方法中,我们调用PrintValues方法,并传递了5个int类型的参数。由于该方法使用params关键字,所以我们可以直接将这些参数作为一个数组传递,而不需要定义该数组的大小类型。 使用params关键字可以使代码更加灵活可读性更高,特别是在需要传递不确定数量的参数时。需要注意的是,params关键字只能用于最后一个参数,并且每个方法只能有一个params参数。 ### 回答2: Unity ParamsUnity 引擎中的一个概念,用于在编写脚本时传递参数或配置选项。在 Unity 中,我们可以通过在脚本的字段前使用 [SerializeField] 属性来将其标记为 Unity 参数。这样标记的字段可以在 Unity 编辑器中进行设置,而不需要修改脚本的代码。 通过 Unity Params,我们可以方便地调整脚本的行为功能。例如,我们可以在脚本中定义一个名为 speed 的参数,控制游戏对象的移动速度。在 Unity 编辑器中,我们可以通过修改这个参数的值来调整游戏对象的移动速度,而不需要手动修改脚本的代码。这种灵活性使得我们可以快速调试优化游戏的各个参数,同时避免了频繁修改代码重新编译的麻烦。 Unity Params 还可以用于配置选项。例如,我们可以用一个参数来设置敌人的难度级别,根据不同的设定,敌人的生命值、攻击力等属性将会有所不同。通过调整这个参数的值,我们可以在不同的游戏场景中创建不同难度的敌人,为玩家提供更具挑战性娱乐性的游戏体验。 综上所述,Unity Params 提供了一种便捷的方法来设置调整脚本的参数配置选项。通过在脚本中使用 [SerializeField] 属性,我们可以在 Unity 编辑器中修改这些参数的值,从而快速调试优化游戏的功能性能,提高开发效率游戏的可玩性。 ### 回答3: Unity paramsUnity 引擎中的一个功能,用于在调用脚本的同时传递参数。它可以方便地将值传递给脚本,使代码更加灵活可重用。 在 Unity 中,我们可以在调用脚本的时候使用 params 关键字来传递参数。这种方式使得我们可以在不事先知道需要传递的参数数量时,动态地传递任意多个参数给脚本。通过这种方式,我们可以在调用脚本的同时传递任意多个参数,并且这些参数可以是相同类型或不同类型的。 使用 params 关键字可以让代码更加简洁可读性更高。我们可以通过扩展 params 关键字传递的参数数量,从而避免了写很多重载的函数来处理不同数量参数的情况。 使用 Unity params 功能时,我们可以在脚本中使用一个特殊的数组来接收传递进来的参数。这个数组可以在脚本中直接使用,从而获取调用时传递的参数值。 总的来说,Unity params 提供了一种方便的方式来在调用脚本时传递参数。它可以帮助我们写出更灵活可重用的代码,提高开发效率代码质量。它是 Unity 引擎中一个非常有用的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值