شرح مفصل لتنفيذ تأخير الوحدة
]إنشاء التأخير في الوحدة أمر ضروري لإدارة تدفقات الألعاب ، وفرز الأحداث ، ومحاكاة سلوك العالم الحقيقي. فيما يلي بعض الطرق لتحقيق التأخير:
1.
startCoroutine
waitforseconds
: يتوقف عن التنفيذ لفترة محددة (متأثر بسرعة اللعبة). waitforsecondsRealTime
: يتوقف عن التنفيذ لفترة محددة (لا يتأثر بسرعة اللعبة). مثال:
2.
IEnumerator WaitForSecondsExample()
{
// 旋转90度
transform.Rotate(Vector3.right * 90);
// 等待4秒(不受游戏速度影响)
yield return new WaitForSecondsRealtime(4);
// 旋转40度
transform.Rotate(Vector3.right * 40);
// 等待2秒(受游戏速度影响)
yield return new WaitForSeconds(2);
// 旋转20度
transform.Rotate(Vector3.right * 20);
}
أو من أجل حلقة
: زيادة المؤقت تدريجياً حتى يتم الوصول إلى القيمة المطلوبة.
العائد على الإرجاع فارغ
: إيقاف تنفيذ إطار واحد.
ienumerator timeBassedLoopexample ()
{
// تدوير 90 درجة
transform.rotate (Vector3.Right * 90) ؛
// انتظر 4 ثوان (متأثر بسرعة اللعبة)
توقيت تعويم = 0 ؛
بينما (مؤقت 3.
IEnumerator TimeBasedLoopExample()
{
// 旋转90度
transform.Rotate(Vector3.right * 90);
// 等待4秒(受游戏速度影响)
float timer = 0;
while (timer
: لا يتم تعليق التنفيذ حتى يكون الشرط صحيحًا.
waitwhile
: إيقاف التنفيذ عندما يكون الشرط صحيحًا.
ienumerator waituntilexample ()
{
// انتظر حتى تصل درجة اللاعب إلى 100
إرجاع إرجاع New Waituntil (() => PlayersCore> = 100) ؛
// تحميل المستوى التالي
Scenemanager.loadScene ("Nextlevel") ؛
} 4.
: جدولة وظيفة لتنفيذها بعد تأخير محدد.
IEnumerator WaitUntilExample()
{
// 等待玩家分数达到100
yield return new WaitUntil(() => playerScore >= 100);
// 加载下一关
SceneManager.LoadScene("NextLevel");
}
: على غرار استدعاء ، لكن الوظيفة تسمى بشكل متكرر على فترات زمنية محددة.
استدعاء ("FeedDog" ، 5) ؛
invokerepeating ("MovePlayer" ، 0.5F ، 0.2F) ؛
]
time.deltatime
: تستخدم لقياس الوقت بين الإطارات.
إذا كان
Invoke("FeedDog", 5); // 5秒后调用FeedDog()
InvokeRepeating("MovePlayer", 0.5f, 0.2f); // 每0.2秒调用MovePlayer(),持续0.5秒。
مثال:
حل مشكلتك:
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3