在“Unity”中,我们经常调试控制台。
public bool printInConsole;
void Start()
{
if ( printInConsole ) Debug.Log("Starting and printing...");
}
我想用Compact来调用这个Unity函数吗?三元运算符。
如何使用C#在Unity中为此编写语句?
答案 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;
在您的方案中,三元运算符无法使用,因为:
condition
为true
(first_expression),另一个用于false
(second_expression)。Debug.Log()
返回void
。你可以发明一些疯狂的方法来在三元运算符中拟合你的逻辑,比如在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_