小编Won*_*der的帖子

Unity - IEnumerator的yield返回null

我目前正在尝试在Unity的上下文中理解IEnumerator和Coroutine,并且对"yield return null"执行的内容不太自信.目前我认为它基本上暂停并等待下一帧,并且在下一帧中它将再次执行while语句.

如果我省略"yield return null",它似乎会立即移动到目的地或者"跳过很多帧".所以我想我的问题是在这个while循环中这个"yield return null"函数是如何实现的,为什么有必要这样做.

void Start () {
    StartCoroutine(Move());
}

IEnumerator Move(){

    while (a > 0.5f){

        ... (moves object up/down)

        yield return null; // <---------
    }

    yield return new WaitForSeconds(0.5f);

    .... (moves object up/down)

    StartCoroutine(Move());
}
Run Code Online (Sandbox Code Playgroud)

c# ienumerator yield coroutine unity-game-engine

8
推荐指数
2
解决办法
3万
查看次数

使用C#中的"out"关键字返回多个值

我现在正在努力理解当它表示使用'out'关键字我们能够返回多个值时它意味着什么.例如,来自msdn网站(https://msdn.microsoft.com/en-us/library/ee332485.aspx):"......以下示例使用out来通过单个方法调用返回三个变量."

class OutReturnExample
{
    static void Method(out int i, out string s1, out string s2)
    {
        i = 44;
        s1 = "I've been returned";
        s2 = null;
    }
    static void Main()
    {
        int value;
        string str1, str2;
        Method(out value, out str1, out str2);
        // value is now 44
        // str1 is now "I've been returned"
        // str2 is (still) null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定我是不是只是没有正确阅读说明,但似乎Method()实际上并没有返回(不使用'return'关键字)任何东西并基本上分配字段(类似地通过传递通过ref).这与其他来源一致,他们声明使用'out'可以返回 多个值.我是否误解了返回词的背景,或者是否是我不能正确理解这个概念的东西?

c# terminology return out keyword

3
推荐指数
1
解决办法
1844
查看次数

为什么将removeCallbacks()与postDelayed()一起使用?

我试图通过浏览 Android Studio 中提供的全屏活动模板来了解其功能,特别是我们removeCallbacks()结合使用的一个特殊原因。postDelayed()在全屏活动模板中,当触摸屏幕时,它将在一定毫秒数后显示/隐藏状态栏和导航/系统栏,在此模板的情况下为 3000 毫秒。


private void hide() {
    // Hide UI first
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
    mControlsView.setVisibility(View.GONE);
    mVisible = false;

    // Schedule a runnable to remove the status and navigation bar after a delay
    mHideHandler.removeCallbacks(mShowPart2Runnable); // <------ Comment/uncomment
    mHideHandler.postDelayed(mHidePart2Runnable, UI_ANIMATION_DELAY);
}

@SuppressLint("InlinedApi")
private void show() {
    // Show the system bar
    mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
    mVisible = true;

    // Schedule a runnable to display UI elements after a …
Run Code Online (Sandbox Code Playgroud)

java android handler runnable postdelayed

3
推荐指数
1
解决办法
3146
查看次数