C# 如何逐步使用函数

C# 如何逐步使用函数,c#,unity3d,C#,Unity3d,很抱歉这个奇怪的标题,我只是不知道如何命名这个问题 所以我有这样一个函数say() 我需要用它好几次。大概是这样的: say("test text 1"); say("test text 2"); say("test text 3"); ... if(Input.GetKeyDown(KeyCode.Space)) { ... } int count = 0; 我需要通过单击空格按钮来更改文本。当然,我需要使用这样的东西: say("test text 1"); say("test

很抱歉这个奇怪的标题,我只是不知道如何命名这个问题

所以我有这样一个函数
say()

我需要用它好几次。大概是这样的:

say("test text 1");
say("test text 2");
say("test text 3");
...
if(Input.GetKeyDown(KeyCode.Space)) {
   ...
}
int count = 0;
我需要通过单击空格按钮来更改文本。当然,我需要使用这样的东西:

say("test text 1");
say("test text 2");
say("test text 3");
...
if(Input.GetKeyDown(KeyCode.Space)) {
   ...
}
int count = 0;
但我不明白如何一步一步地显示文本。例如,如果我点击空格键一次,就会看到“测试文本1”。下一次点击应该会显示“测试文本2”等


我怎样才能意识到这一点?提前感谢。

定义一个类字段,如下所示:

say("test text 1");
say("test text 2");
say("test text 3");
...
if(Input.GetKeyDown(KeyCode.Space)) {
   ...
}
int count = 0;
现在每次空间被击中时:

if(Input.GetKeyDown(KeyCode.Space)) {
    say("test text " + count);
    count = count + 1;
}

定义一个类字段,如下所示:

say("test text 1");
say("test text 2");
say("test text 3");
...
if(Input.GetKeyDown(KeyCode.Space)) {
   ...
}
int count = 0;
现在每次空间被击中时:

if(Input.GetKeyDown(KeyCode.Space)) {
    say("test text " + count);
    count = count + 1;
}

根据您的需要,您可以将不同的文本存储在一个文件夹中,甚至可以这样做

列表示例 队列示例 然后

if(Input.GetKeyDown(KeyCode.Space)) 
{
    // retrieves the first entry in the queue and at the same time
    // removes it from the queue
    if(texts.Count > 0) say(texts.Dequeue());
}

简易计数器 如果它真的只是有一个不同的int值,那么是的,只需使用一个字段

private int index;

if(Input.GetKeyDown(KeyCode.Space)) 
{
    // uses string interpolation to replace {0} by the value of index
    say($"test text {0}", index);
    // increase index by one
    index++;
}

根据您的需要,您可以将不同的文本存储在一个文件夹中,甚至可以这样做

列表示例 队列示例 然后

if(Input.GetKeyDown(KeyCode.Space)) 
{
    // retrieves the first entry in the queue and at the same time
    // removes it from the queue
    if(texts.Count > 0) say(texts.Dequeue());
}

简易计数器 如果它真的只是有一个不同的int值,那么是的,只需使用一个字段

private int index;

if(Input.GetKeyDown(KeyCode.Space)) 
{
    // uses string interpolation to replace {0} by the value of index
    say($"test text {0}", index);
    // increase index by one
    index++;
}
此代码:

if(Input.GetKeyDown(KeyCode.Space)) {
   ...
}
仅适用于Unity,在Visual Studio中,您必须为要执行此操作的任何对象创建一个事件,例如,如果每次按空格键时都要调用一个void,则很容易:(下图)

在Propities窗口中,按bolt图标,然后双击要创建的事件(示例):TextChanged、LocationChanged、MouseMove等

我将在文本框对象上使用KeyDown

现在,在您的代码中,应该生成这个空

在这个空白处,我写下了代码,它看起来是这样的:

(将int n=1放在空隙之前)

现在,每次按下或保持按下空格键时,文本框将填充“测试文本”,并且每次的值将增加1。

此代码:

if(Input.GetKeyDown(KeyCode.Space)) {
   ...
}
仅适用于Unity,在Visual Studio中,您必须为要执行此操作的任何对象创建一个事件,例如,如果每次按空格键时都要调用一个void,则很容易:(下图)

在Propities窗口中,按bolt图标,然后双击要创建的事件(示例):TextChanged、LocationChanged、MouseMove等

我将在文本框对象上使用KeyDown

现在,在您的代码中,应该生成这个空

在这个空白处,我写下了代码,它看起来是这样的:

(将int n=1放在空隙之前)


现在,每次按下或保持按下空格键时,文本框将填充“test text”(测试文本),并且每次的值都将增加1。

使用a或偶数如何?使用a或偶数如何?“golobal变量”应为“class field”(类字段)。同时使用$-字符串插值,否则我也会使用此策略,加上费尔多的评论。(也是count++)由于这个问题非常基本,我认为
count++
和$-string插值可能会让他感到困惑,“golobal变量”应该是“class field”。还要使用$-string插值,否则我也会采用这个策略,并添加了Fildor的注释。(也是count++)由于这个问题非常基本,我想
count++
和$-字符串插值可能会把他搞糊涂