اتصال یونیتی - کار با Observer ها

سرویس بلادرنگ «RealTime»

با استفاده از قابلیت قابلیت Observer ها در گیم سرویس میتوانید به آسانی یک شی موجود در بازی خود را به صورت خودکار با دیگر اعضای موجود در رووم بازی همگام سازی کنید. برای استفاده از این قابلیت میبایست کامپونت GsLiveRtObserver را به شی مورد نظر اضافه کرده و سپس با توجه به بازی خود برای آن یک ایدی ۱ تا ۲۵۵ به صورت یکتا مشخص کنید. در ادامه میباید با اضافه کردن یکی از چهار کامپونت هایی که در ادامه ذکر خواهد شد مشخص کنید گیم سرویس میباید بر کدام مولفه های شی نظارت کند.

توجه کنید که برای استفاده از Observer ها میبایست پریفب شی مورد نظر شامل Observer باشد و با استفاده از Instantitate ایجاد شود.

Realtime Transform Observer:

با افزودن کامپونت Transform Observer به شی، گیم سرویس بر روی جهت، موقعیت و ابعاد شی مورد نظر نظارت کرده و در صورتی تغییر با دیگر کاربران همگام سازی خواهد کرد. شما میتوانید بسته به نیاز خود هرکدام از این مولفه ها را خاموش یا روشن کنید. استفاده از این کامپونت نیاز به وجود کامپونت Transform در این شی دارد.

 

Realtime SmoothMove Observer:

این کامپونت نیز Transform شی مورد نظر را همگام سازی میکند اما شما میتوانید با مشخص کردن Threshhold حداقل تغییرات مورد نیاز برای اقدام به همگام سازی را مقدار دهی کنید و میزان LerpRate را نیز مشخص کنید. در صورتی از این کامپونت استفاده کنید که بخواهید این مقادیر را خود به صورت دستی مقدار دهی کنید.

 

Realtime RigidBody Observer:

این کامپونت مقدار ‌RigidBody موجود در شی مورد نظر را با دیگر کاربران همگام سازی میکند. برای استفاده از این کامپونت نیاز است از کامپونت RigidBody در این شی استفاده شده باشد. مقادیر همگام سازی شده میتواند موارد زیر باشد: 

+ Velocity

+ Angular Velocity

+ Teleport Enable

با فعالسازی قابلیت Teleport در صورتی که تفاوت فاصله قبلی کاربر با فاصله کنونی از مقدار تعیین شده در این مولفه بیشتر باشد گیم سرویس اقدام به بروزرسانی شی خواهد کرد.

 

RealTime RigidBody2D Observer:

این کامپونت برای بازی های دوبعدی استفاده شده و مقدار RigidBody2D را در این نوع بازی ها همگام سازی خواهد کرد. آپشن های این کامپونت مشابه کامپونت قبلی است.

 

نوشتن Custom Observer

برای نوشتن Observer های دیگری که برای بازی شما مورد نیاز است میتوانید با ایجاد یک کلاس MonoBehaviour و پیاده سازی اینترفیس IGsLiveSerializable ناظر مورد نظر خود را بسازید. با پیاده سازی اینترفیس IGsLiveSerializable دو تابع OnGsLiveRead و OnGsLiveWrite به کلاس اضافه میشود. شما میتوانید با استفاده از این دو تابع مقادیر مورد نظر خود را ارسال و دریافت کنید. در این ارسال و دریافت ترتیب ارسال و دریافت داده ها یکسان باقی خواهد ماند. برای بررسی نمونه میتوانید از این لینک استفاده کنید.