如何在Unity C中压缩if语句的运算符#

时间:2016-08-05 20:03:55

标签: c# debugging if-statement unity3d ternary-operator

在“Unity”中,我们经常调试控制台。

public bool printInConsole;

void Start()
{
    if ( printInConsole ) Debug.Log("Starting and printing...");
}

我想用Compact来调用这个Unity函数吗?三元运算符。
如何使用C#在Unity中为此编写语句?

5 个答案:

答案 0 :(得分:1)

在您的情况下,因为您只想在条件满足时进行打印,所以您可以使用if块,并且不需要使用三元运算符。

if ( printInConsole ) 
   Debug.Log("Starting and printing..."); 

答案 1 :(得分:1)

如果您要记录多件事,并且只想避免“if / log”循环,则可以创建一个方法:

private void LogIt(string msg)
{
    if (printInConsole)
        Debug.Log(msg);
}

然后,每次想要记录某些内容时,您只需致电LogIt()

答案 2 :(得分:1)

TLDR使用if:

if ( printInConsole ) Debug.Log("Starting and printing..."); 

C#中三元表达式的语法如下:

condition ? first_expression : second_expression;

在您的方案中,三元运算符无法使用,因为:

  1. 它需要两个表达式:一个用于conditiontrue(first_expression),另一个用于false(second_expression)。
  2. 三元运算符表达式必须返回一个值,Debug.Log()返回void
  3. 你可以发明一些疯狂的方法来在三元运算符中拟合你的逻辑,比如在Debug.log()委托中包装Action调用,但这是浪费,因为三元运算符的整个点是让你的代码更简单...

答案 3 :(得分:0)

不,没有办法让 if 语句比以下更紧凑:

if ( printInConsole ) Debug.Log("Starting and printing...");

更好的视觉方式,正如“ Rahul ”指出的那样,更具可读性:

if ( printInConsole ) 
   Debug.Log( "Starting and printing..." );

作为“ Genos ”提及,使用C#compact三元运算符是不正确的,例如:

printInConsole ? Debug.Log("Starting and printing...");

因为它需要第二个表达式。

可以在函数内部完成,但结果不是更紧凑,简单或可读。:

Debug.Log(printInConsole ? "Running and printing..." : "\n");

itsme86 ”,我的传统解决方案是创建一个特定的紧凑功能方法。通过这种方式,调用函数更加紧凑。

Mss("Starting and printing..." );

在我的例子中,完整的Unity代码示例将是:

public bool printInConsole;

void Start()
{
    Mss("Starting and printing..." );
}

private void Mss(string consoleMessage)
{
    if (printInConsole)
        Debug.Log(consoleMessage + "\n");
}

另一个解决方案是为键盘按钮指定一个自定义宏来打印出来:

if ( printInConsole ) 
   Debug.Log( "" + "\n");

因为我不是英语,所以我建议你改善我的答案。

答案 4 :(得分:-4)

if(printInConsole)?Debug.Log("Starting and printing..."): _you_else_condition_