Skip to content
  • Tiếng Việt
  • English

Series Chia sẻ kiến thức lập trình Game nhập môn - Part 3

CHƯƠNG 3: Object-Oriented Programming (OOP) và Design Pattern trong lập trình game

Sau một thời gian có phần hơi im ắng, series Chia sẻ kiến thức của UIT GamApp Studios đã quay trở lại rồi đây mọi người ơi!!!

Là một UITer, chắc hẳn chẳng ai còn xa lạ với Lập trình hướng đối tượng hay còn gọi là OOP, “cơn ác mộng” đã làm khổ biết bao thế hệ sinh viên. Bạn có bao giờ thắc mắc học những kiến thức nhàm chán này để làm gì chưa? Hãy để chúng mình bật mí ứng dụng tuyệt vời của OOP thông qua Design Pattern trong việc lập trình game nhé!

Có thể là hình vẽ ngẫu hứng về văn bảnCó thể là hình ảnh về văn bảnCó thể là đồ họa về văn bảnCó thể là đồ họa về văn bản cho biết 'Singleton GamePlayManager EndGame()= => GameDataManagert to Save Pause()/ Resume( Revive() highscore StartGame(gameData){ Instance(plane)| plane.StartGame() EnemyManager.Ins.StartGame) this_amountBulletA gameData.amountBulletA EnemyManager lanager Enemy oid pubiliviSoSee publicvoid Shoot A() amount-- plane.ShootA():] BulletManager Boss Player Creep GameUlManager UITGamAppstudios UIT GamApp studios Series Chia sẻ kiến thức Game nhập môn OOP & Design Pattern'Có thể là đồ họa về văn bản cho biết 'Singleton public class BulletManager { MonoBehaviour private static BulletManager _instance; public static BulletManager Instance get { (_instance == null) _instance FindobjectOfTypecBulltHenager>() return _instance; publicListksullet>_bulletListPreab public List<Bullet> _bulletListPrefab; before Start private privatevoidAwake() void Awake() BulletManager if (_instance _instance else Destroy( null) this; public { Bullet GetABulletPrefab(int index) game0bject); if (index && index _bulletListPrefab. Count) eturn bulletListPrefab[index]; return null; UIT UITGamAppstudios GamApp studios Series Chia se kiến thức Game nhập môn OOP & Design Pattern'Có thể là đồ họa về văn bảnCó thể là đồ họa về bản thiết kế và văn bản cho biết 'Pooling Pooling&Singleton & Singleton BulletManager prefab Bullet Queue] activeBullet Transform pool void Prepare( I1 Spawn obj Bullet lake() Prepare queue.Count Count O void Return (bullet B) //Deactive and enqueue Khi cần bắn Khi Khinổ nổ Player string* myBulletType BulletManager.Instance.Take() BaseEnemy string* myBulletType BullethManager.Instance.Take() BaseBullet BulltMlanager.lnstance.Returm(tis) BulletManager.! UITGamAppstudios UIT GamApp studios Series Chia se kiến thức Game nhập môn 0OP & Design Pattern'Có thể là hình ảnh về văn bản cho biết 'Pooling Pooling&Singleton & Singleton BulletManager.cs Assembly CSharp Enemy.cs Bullet.cs Character.cs private void Awake() public な Bulle Queue<Bullet> ac tiveBullet; Bullet _bulletPrefab; _poolPanel; bulletPrepare; public Bullet Take() Prepare() bulletPrepare; i++) Bullet Instantiate( Instant bulletPrefab, .game0bject SetActive(fa Ise); activeBullet. Enqueue(b); if(thi .activeBullet.Count<=0 0) activeBullet. Count Prepare(); Bullet activeBullet Dequeue() b gameObject SetActive(true); true); returnb; b; pool poolPanel); ;( void oidStart() } reference public void Return(Bullet b) activeBullet Prepare(); Queue(Bullet>(); activeBullet Enqueue(b); b .transform SetParent( poolPanel); Panel); b gameObj ject .SetActive(false); SetAc SetActive(f ive alse); UITGamAppstudios UIT GamApp studios Series Chia kiến thức Game nhập môn OOP & Design Pattern'

Mọi thông tin chi tiết xem tại: https://www.facebook.com/UITGamAppStudios/posts/pfbid02maQMCgGjCgdiSF8XZRLzcm5MLBpXBGnbZefpLzQNi7ySHhyUYQf7TTe881kFro1Yl 

Hạ Băng - Cộng tác viên Truyền thông Trường Đại học Công nghệ Thông tin