从另一个方法调用字符串

时间:2016-04-05 15:00:14

标签: c# unity3d unity5

我在同一个脚本中从另一个方法调用字符串时遇到问题。我不确定C#是否可行 对不起,我是C#的新手,但我曾经在Objective-C中这样做,所以也许它可能在这里?

因此,下面的代码是我尝试使用该字符串的方法。 此方法检查游戏中是否传递了消息并执行代码。

void HandleMessage(string message, string metadata)
{

    if (message == "UnlockName")
    {

    }
}

这是包含所需字符串(txt)

的方法
    void OutputText( string txt ) {
    //string firstName = lastLoadedLevel.contact.name.Split(new char[] { ' ' })[0];
    //txt = txt.Replace("C:", firstName + ":");

    txt = txt.Replace("D:", "D's name:");

    txt = txt.Replace("[name]", PlayerPrefs.GetString("name"));

    chat.AddText( txt, delegate {
        options.gameObject.SetActive( true );
    } );
}

现在它包含(txt.Replace),它在整个文本输出中自动发生。 我想在(void HandleMessage)中执行相同操作,仅在传递消息“UnlockName”时执行替换代码。 这里的两条注释行是我需要使用的,但我不知道如何在第一种方法中使用它们。

任何帮助都会很棒:) 提前谢谢。

1 个答案:

答案 0 :(得分:0)

这样的事情可能是:

string HandleMessage(string message, string txt)
{
    if (message == "UnlockName")
    {
        string firstName = lastLoadedLevel.contact.name.Split(new char[] { ' ' })[0];
        return txt.Replace("C:", firstName + ":");
    }
}

void OutputText(string txt, string message) 
{
    txt = HandleMessage(message, txt);
    txt = txt.Replace("D:", "D's name:");
    txt = txt.Replace("[name]", PlayerPrefs.GetString("name"));
    chat.AddText(txt, delegate 
        {
            options.gameObject.SetActive(true);
        });
}

可能需要一些调整,我对你如何使用东西做了一些猜测。

如果不出意外,它应该为您提供一种方法来传递字符串进出方法的概念。您还可以保留void签名并传入要操作的字符串作为ref参数。