我目前正在尝试在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) 我现在正在努力理解当它表示使用'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'可以返回 多个值.我是否误解了返回词的背景,或者是否是我不能正确理解这个概念的东西?
我试图通过浏览 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) c# ×2
android ×1
coroutine ×1
handler ×1
ienumerator ×1
java ×1
keyword ×1
out ×1
postdelayed ×1
return ×1
runnable ×1
terminology ×1
yield ×1