ইউনিট 3 ডি সি # স্ক্রিপ্টগুলিতে কি `ফলন মিথ্যা ফেরত দেয়; এর বিশেষ অর্থ আছে?


17

ইউনিটিতে, আমাদের কর্টিনগুলির জন্য কিছু বিশেষ জিনিস রয়েছে যা সাধারণ সি # এর অতিরিক্ত।

উদাহরণস্বরূপ, আমরা ব্যবহার করতে পারি

yield return WaitForSeconds(5.f);

চালিয়ে যাওয়ার আগে 5 সেকেন্ডের জন্য কাউরেটিন অপেক্ষা করতে হবে।

কি করবে yield return false;আর yield return true;কি করবে?


এইচএম আমি yield return trueবিশেষ কিছু করি কিনা তা নিশ্চিত নই । তবে yield return nullকেবল কোনও ফ্রেমের জন্য বিরতি দেয়, তাই আমার সন্দেহ হয় যে yield return falseএর ঠিক একই প্রভাব রয়েছে ( yield return 0যেহেতু 0 টি
নালও

@ জহকিং "যেহেতু 0 টি মিথ্যা নাল হুডের নীচে সমস্ত একই" কেন এটি ব্যাপার? সি # হ'ল একটি দৃ strongly়-টাইপিত ভাষা, তাই বেশিরভাগ সময়, কীভাবে কিছু কিছু "হুডের নীচে" দেখায় তাতে কিছু আসে যায় না। উদাহরণস্বরূপ, যদি আপনি শুধু ব্যবহার করতে পারবেন না if (0)বা if (null)সি এবং সি ++ এ অসদৃশ।
সুইভ

সঙ্কুচিত করো তাহলে কিছু যায় আসে না। আমি শুধু জানি যে yield return 0কাজ করে;
আপাতত

2
এটি সাধারণ সি # তে অতিরিক্ত নয়yieldশব্দ থেকে # 2.0 অন্তত সি হয়েছে প্রায়। সমস্ত ityক্য হ'ল একে কর্টিন বলে এবং উত্পন্ন পুনরুক্তি এবং এটি থেকে ফিরে আসা মানগুলি এমনভাবে পরিচালনা করে যাতে আপনি আপনার কোডের প্রয়োগে অ-ব্লকিং বিলম্ব ঘটাতে পারেন।
বা ম্যাপার

1
@ অলমো: এটি কেবল কারণ WaitForSecondsঘোষণা করা হয়নি। আপনি WaitForSecondsযে জাতীয় নামক একটি পদ্ধতিটি ঘোষনা করার সাথে সাথে একটি ফ্লোট আর্গুমেন্ট গ্রহণ করে এবং এটি আপনি প্রয়োগ করছেন এমন গণনাটির উপাদান ধরণের প্রত্যাবর্তন করবে, এটি আবার সংকলন করবে। সুতরাং, yieldityক্যের জন্য বিশেষ নয়। যদি কিছু WaitForSecondsহয় তবে Unক্যের জন্য পদ্ধতিটি বিশেষ, তবে তারপরেও এটি ভাষা সি # প্রসারিত করে না , কেবল একটি অতিরিক্ত পদ্ধতি যা স্ট্যান্ডার্ড সি # ব্যবহার করে রচিত হয়েছিল।
বা ম্যাপার

উত্তর:


19

শিডিয়ুলার বুঝতে পারে একমাত্র সম্ভাব্য ফলনের মানগুলি:

  • থেকে প্রাপ্ত ক্লাস YieldInstruction( WaitForSeconds, WaitForEndOfFrame, WaitForFixedUpdate, AssetBundleCreateRequest, AssetBundleRequestএবং Coroutine
  • একটি WWWবস্তু
  • "অন্য কোনও মান" যা উপরেরগুলির মধ্যে একটি নয়।

যদি "অন্য কোনও মান" হয় পাওয়া যায় (যার মধ্যে "নাল" একটি স্ট্রিংয়ের মান অন্তর্ভুক্ত থাকে অন্য কোনও মৌলিক ধরণের যেমন ইনট, বুল , ... বা একটি স্বেচ্ছাচারিত বস্তুর রেফারেন্স যা উপরে বর্ণিতগুলির মধ্যে একটি নয়) শিডিউলারটি করবে পরবর্তী ফ্রেমের জন্য কর্টিন "শিডিয়ুল" করুন

- বুন্নি 83 উত্তর: ityক্য উত্তরগুলির বিশিষ্ট সদস্য

WaitForEndOfFrameএবং মত অন্যদের, শুধু ফাঁকা ফাংশনের আছে ট্যাগ YieldInstructionঅর্ডার কি ইঞ্জিন না করার সিদ্ধান্ত নেন হবে।

ডিফল্ট কেস বলে মনে হচ্ছে WaitForEndOfFrame। তাই যদি আপনিyield return এমন কোনও কিছু ব্যবহার করেন যার বিশেষ অর্থ নেই, যেমন একটি বুল, এটি একইরকম WaitForEndOfFrame

এই আচরণ সম্পর্কে কোনও অফিসিয়াল ডকুমেন্টেশন আছে বলে মনে হয় না।


হালনাগাদ

rutter আরও একটি বিশেষ ক্ষেত্রে সম্পর্কে মন্তব্য করেছে:yield return null

yield return nullফ্রেম রেন্ডারগুলির আগে চালানো সহ beforeক্য কর্টিনগুলি সহ সমস্ত চালায় WaitForEndOfFrame। আপনি জানতে পারেন rutter এর ইউনিটিতে উপর উত্তর সন্ত্রস্ত উত্তর ব্যাখ্যা এই বিষয়ে আরও (চমৎকার ডায়াগ্রামে অন্তর্ভুক্ত)।


6
এটি ধরে নেওয়া সাধারণ যে ফলনশীল nullএবং WaitForEndOfFrameএকই রকম, তবে মৃত্যুদন্ড কার্যকর করার আদেশ ম্যানুয়াল পৃষ্ঠায় বিস্তারিত হিসাবে এগুলি কিছুটা আলাদা
রাটার 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.