ترتیب کامپایل پوشه ها و اسکریپت های ویژه در یونیتی
جمعه, ۹ مهر ۱۳۹۵، ۰۳:۲۵ ب.ظ
gameover.blog.ir
(سطح:حرفه ای)
شما می توانید اسم های دلخواهی را برای پوشه های خودتان در نظر بگیرید.
اما یونیتی،بعضی از اسم ها رو برای اهداف خاصی رزرو می کنه.
بعضی از این اسم ها،روی ترتیب کامپایل اسکریپت های شما تاثیر خواهد گذاشت.
اساسا چهار فاز برای کامپایل اسکریپتی که در پوشه های مختلف هستند وجود داره.
زمانیکه یک اسکریپت باید به کلاس های درون اسکریپت دیگه دسترسی داشته باشه.قانون اصلی اینه که هر چیزی در فاز بعد (after) از فاز فعلی کامپایل میشه نمی تونه بهش اشاره یا رجوع داده بشه.اما هرچیزی در فاز ی فعلی یا قبلی کامپایل بشه به طور کامل قابل دسترسی هست.
وضعیت بعدی موقعی هست که قراره از داخل یک اسکریپ به کلاس های داخل اسکریپت دیگه ای مراجعه کنیم به زبان دیگه ای هست.(مثلا مراجعه به یک فایل اسکریپت یونیتی که متغیرهایی از یک کلاس به زبان C# در آن تعریف شده است.) قانون اینجا اینه کلاسی که به آن مراجعه می کنیم باید در یک فاز زودتر(جلوتر) کامپایل شده باشد.
بقیه در حال ترجمه....
علاوه بر این هر اسکریپت داخل یک پوشه به نام WebPlayerTemplates در سطح بالای پوشه ی Assets به هیچ وجه اجرا نخواهد شد.این رفتار،با پوشه هایی با نام های ویژه کمی تفاوت دارد.(برای مثال Scripts/Editor به عنوان یک پوشه ی editor script عمل می کند.اما Scripts/WebPlayerTemplates اجرا می شود و مانعی برای کامپایل نخواهد شد)
یک مثال معمول این است که اسکریپت شما نیاز به مراجعه به کلاس تعریف شده در یک فایل سیشارپ دارد.برای دسترسی به این امر باید اسکریپت خود را داخل پوشه ای به نام Plugins قرار دهید و اسکریپت یونیتی خودتون رو داخل یک پوشه ی معمولی و غیر ویژه (غیر از اسم های خاص که یونیتی استفاده می کنه) قرار بدید. اگر شما این کار رو نکنید با خطایی تحت عنوان C# class cannot be found مواجه می شوید به معنی اینکه کلاس سیشارپ نمی تواند پیدا شود.
(سطح:حرفه ای)
شما می توانید اسم های دلخواهی را برای پوشه های خودتان در نظر بگیرید.
اما یونیتی،بعضی از اسم ها رو برای اهداف خاصی رزرو می کنه.
بعضی از این اسم ها،روی ترتیب کامپایل اسکریپت های شما تاثیر خواهد گذاشت.
اساسا چهار فاز برای کامپایل اسکریپتی که در پوشه های مختلف هستند وجود داره.
زمانیکه یک اسکریپت باید به کلاس های درون اسکریپت دیگه دسترسی داشته باشه.قانون اصلی اینه که هر چیزی در فاز بعد (after) از فاز فعلی کامپایل میشه نمی تونه بهش اشاره یا رجوع داده بشه.اما هرچیزی در فاز ی فعلی یا قبلی کامپایل بشه به طور کامل قابل دسترسی هست.
وضعیت بعدی موقعی هست که قراره از داخل یک اسکریپ به کلاس های داخل اسکریپت دیگه ای مراجعه کنیم به زبان دیگه ای هست.(مثلا مراجعه به یک فایل اسکریپت یونیتی که متغیرهایی از یک کلاس به زبان C# در آن تعریف شده است.) قانون اینجا اینه کلاسی که به آن مراجعه می کنیم باید در یک فاز زودتر(جلوتر) کامپایل شده باشد.
بقیه در حال ترجمه....
فاز 1 : اسکریپت های زمان اجرا(runTime) در پوشه هایی به نام Standard Assets و Pro Standard Assets و Plugins .
فاز 2 : Editor scripts در پوشه ای به نام Standard Assets/Editor و Pro Standard Assets/Editor و Plugins/Editor.
فاز 3 : تمام اسکریپت هایی که پوشه ای قرار ندارند اسکریپت های Editor نامیده می شوند.
فاز 4 : تمام اسکریپت های باقیمانده (مثل اسکریپت هایی که داخل یک پوشه هستند اسکریپت های Editor نامیده می شوند.)
علاوه بر این هر اسکریپت داخل یک پوشه به نام WebPlayerTemplates در سطح بالای پوشه ی Assets به هیچ وجه اجرا نخواهد شد.این رفتار،با پوشه هایی با نام های ویژه کمی تفاوت دارد.(برای مثال Scripts/Editor به عنوان یک پوشه ی editor script عمل می کند.اما Scripts/WebPlayerTemplates اجرا می شود و مانعی برای کامپایل نخواهد شد)
یک مثال معمول این است که اسکریپت شما نیاز به مراجعه به کلاس تعریف شده در یک فایل سیشارپ دارد.برای دسترسی به این امر باید اسکریپت خود را داخل پوشه ای به نام Plugins قرار دهید و اسکریپت یونیتی خودتون رو داخل یک پوشه ی معمولی و غیر ویژه (غیر از اسم های خاص که یونیتی استفاده می کنه) قرار بدید. اگر شما این کار رو نکنید با خطایی تحت عنوان C# class cannot be found مواجه می شوید به معنی اینکه کلاس سیشارپ نمی تواند پیدا شود.
۹۵/۰۷/۰۹