unity中return返回

本文探讨了在C#编程中return语句在方法中的作用,特别是在递归调用中的行为。通过示例解释了如何正确使用return来控制方法的流程,并解决了在递归获取对象路径时遇到的问题。通过设置局部变量积累路径,避免了因return导致的路径丢失,从而正确获取并返回完整的对象路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

return在方法中使用,直接跳出当前方法;

如:执行以下方法最终输出结果:“从5返回”;

    float test1 = 10;
    string TestReturn()
    {
        if (test1 == 10)
        {
            if (test1 - 5 == 5)
            {
                Debug.Log("从5返回");
            }
        }
        Debug.Log("从10返回");
        return "10";
    }

如果if判断中,调用方法A,方法A内部有return,执行if判断时,不受方法A内部的return影响;

如:执行以下方法最终输出结果:“从5返回”,“从10返回”;

    float test1 = 10;
    string TestReturn()
    {
        if (test1 == 10)
        {
            //if (test1 - 5 == 5)
            //{
            //    Debug.Log("从5返回");
            //}
            TestReturn2();
        }
        Debug.Log("从10返回");
        return "10";
    }
    string TestReturn2()
    {
        if (test1 - 5 == 5)
        {
            Debug.Log("从5返回");
            return "5";
        }
        return "5-10";
    }

 问题发现于:应用递归输出当前场景某一对象的路径;

原始写法如下:

void Start(){
         Debug.Log(OutputObjPath(PanelPractice, PanelPractice.name));
}
string OutputObjPath(Transform tar, string path)
    {
        if (tar.parent != null)
        {
            path = tar.parent.name + "/" + path;
            OutputObjPath(tar.parent, path);
        }
        return path;    
    }

 

我将PanelPractice传递给OutputObjPath方法,输出结果为:“PanelTatal/PanelPractice”;

通过断点调试后发现,最后已经获取到了想要的路径,当执行return时,首先执行最后一次调用的OutputObjPath方法中的return,然后执行倒数第二次调用OutputObjPath方法中的return,。。直到执行第一次调用OutputObjPath方法中的return,此时path传递的路径是第一次传递的“PanelTatal/PanelPractice”,所以只返回“PanelTatal/PanelPractice”;

 

 修改如下:设置变量,重复接收路径,最后返回路径即可;

string objPath="" ;
//tar:想要输出路径的对象   path:对象名
string OutputObjPath1(Transform tar, string path)
{
    if (tar.parent != null)
    {
         objPath = tar.parent.name + "/" + path;
         OutputObjPath1(tar.parent, objPath);
     }
     return objPath;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值