بیشترین جایی که در بازی از ویدیو استفاده میکنیم، قبل از شروع بازی میباشد که ممکن است داستان بازی را روایت کند؛ علاوه بر آن ممکن است در برخی از مراحل بازی، ویدیو را مثلا روی یک گیمآبجکتی که نقش نمایشگری مثل تلویزیون را ایفا میکند نمایش دهیم.
حالا در این مطلب آموزشی، با نحوهی ساخت یک ویدیو پلیر در یونیتی و به دو روش مختلف در خدمت شما هستیم؛ اما روش بهتری در ورژنهای جدید یونیتی اضافه شده است و آن استفاده از کامپوننت Video Player میباشد که ما این روش را در پست جدایی برای شما قرار دادهایم (کلیک کنید)
اما دو روشی که در اینجا برای شما قرار میدهیم، به شرح زیر میباشند:
- پخش ویدیو روی یک آبجکت خاص
- پخش ویدیو روی GUI
در هردو روش، ما از کلاس MovieTexture استفاده میکنیم.
مراحل مشترک هردو روش
- یک اسکریپت به نام VideoPlayer ِیا هرچیز دیگری بسازید.
- در اسکریپت VideoPlayer، یک ویژگی به نام video از نوع MovieTexture و به صورت public تعریف کنید.
- یک گیم آبجکت بسازید.
- اسکریپت VideoPlayer را به گیم آبجکت ساخته شده اختصاص دهید.
- یک ویدیو به Assets اضافه کنید.
- ویدیو را به ویژگی video که در اسکریپت تعریف کردهاید، از طریق Inspector اختصاص دهید.
- متدی به نام play در اسکریپت VideoPlayer ایجاد کنید.
- داخل متد play، متد play مربوط به ویژگی video را اجرا کنید. یعنی video.play()
- متد play را در Start فراخوانی کنید.
اگر میخواهید صدا هم داشته باشید: (مطلب کار با صدا در یونیتی)
- یک کامپوننت AudioSource به آبجکت مورد نظر اضافه کنید. (همان آبجکتی که VideoPlayer را به آن اضافه کردهاید)
- صدای فیلم را به فیلد AudioClip اختصاص دهید.
- تیک گزینهی Play On Awake را بردارید تا خودکار شروع به پخش شدن نکند.
- در داخل اسکریپت VideoPlayer، یک ویژگی به نام sound و از جنس AudioSource و به صورت private تعریف کنید.
- در داخل Start، کامپوننت AudioSource را گرفته و داخل ویژگی sound قرار دهید.
- در نهایت داخل متد play ای که خودمان نوشتهایم، متد play مربوط به sound را نیز فراخوانی کنید.
در نهایت کد VideoPlayer ای که نوشتهاید، تا به اینجا باید به صورت زیر باشد:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class VideoPlayer : MonoBehaviour { public MovieTexture video; private AudioSource sound; void Start () { sound = GetComponent<AudioSource> (); play (); } private void play() { video.Play (); sound.Play (); } }
در ادامه، این کد را به دو روش مختلف کامل میکنیم.
روش اول: پخش ویدیو روی آبجکت
اسکریپت را به صورت زیر کامل میکنیم:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class VideoPlayer : MonoBehaviour { public MovieTexture video; private AudioSource sound; private Renderer renderer; void Start () { renderer = GetComponent<Renderer> (); renderer.material.mainTexture = video; sound = GetComponent<AudioSource> (); play (); } private void play() { video.Play (); sound.Play (); } }
همانطور که میبینید، کامپوننت Renderer مربوط به آبجکت فعلی را در داخل متد Start گرفته و ویدیو را به تسکچر آن اختصاص میدهیم. سپس متد play را اجرا میکنیم. (البته بایستی آبجکت Empty نبوده و چیزی مثل Plane یا Cube باشد.)
روش دوم: پخش ویدیو با GUI
در این روش از GUI استفاده می کنیم:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class VideoPlayer : MonoBehaviour { public MovieTexture video; private AudioSource sound; void Start () { sound = GetComponent<AudioSource> (); play (); } void Update () { } void OnGUI() { GUI.DrawTexture (new Rect (0, 0, Screen.width, Screen.height), video); } private void play() { video.Play (); sound.Play (); } }
در داخل متد OnGUI که مربوط به UI میباشد، ما با استفاده از متد DrawTexture از کلاس GUI، یک مربع یا Rect به صورت Full Screen ترسیم کرده و MovieTexture را به آن اختصاص دادهایم. این متد از ما Texture گرفته و روی صفحه و در حالت UI ترسیم میکند.
چند متد مهم کلاس MovieTexture
- متد isPlaying : برای فهمیدن این که آیا ویدیو در حال پخش است یا خیر.
- متد pause : برای توقف موقت ویدیو استفاده میشود؛ یعنی زمانی که دوباره play اجرا شود، از همان جایی که توقف شده است ادامه میدهد.
- متد Stop: برای توقف کامل ویدیو استفاده میشود؛ یعنی زمانی که دوباره play اجرا شود، از اول پخش خواهد شد.
نظرات ثبت شده بدون دیدگاه