Penskripan Berasaskan Komponen
Reka entiti permainan sebagai jadual dengan komponen tingkah laku dalam Lua.
Penskripan Berasaskan Komponen ialah pelajaran Lua Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Lua Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Apakah Reka Bentuk Berasaskan Komponen?
Daripada hierarki class yang mendalam, entiti dibina daripada komponen — jadual kecil yang memfokuskan data dan tingkah laku. Entiti hanyalah himpunan komponen.
Entiti sebagai Jadual
Entiti ialah jadual dengan id dan subjadual components. Komponen boleh ditambah dan dialih keluar semasa masa jalan.
local function newEntity(id)
return {id = id, components = {}}
end
local player = newEntity(1)Menambah Komponen
Pasangkan komponen dengan menetapkan kunci bernama dalam jadual komponen.
player.components.position = {x=0, y=0}
player.components.health = {hp=100, max=100}
player.components.sprite = {image="player.png", scale=1}Sistem Memproses Komponen
Sistem memproses semua entiti yang mempunyai set komponen yang diperlukan. Sistem melakukan lelaran pada entiti dan mengemas kini data komponen.
local function moveSystem(entities, dt)
for _, e in ipairs(entities) do
local pos = e.components.position
local vel = e.components.velocity
if pos and vel then
pos.x = pos.x + vel.dx * dt
pos.y = pos.y + vel.dy * dt
end
end
endSkrip Komponen
Pasangkan fungsi Lua sebagai tingkah laku komponen — satu bentuk penskripan mudah bagi setiap entiti.
player.components.ai = {
update = function(self, entity, dt)
-- move towards target
end
}Pendaftaran Komponen
Pendaftaran memetakan nama jenis komponen kepada fungsi kilang, lalu membolehkan komponen dicipta berdasarkan nama (contohnya, daripada fail aras).
local registry = {}
function registry.register(name, factory)
registry[name] = factory
end
function registry.create(name, ...)
return registry[name](...)
endMengalih Keluar Komponen
Tetapkan komponen kepada nil untuk mengalih keluarnya. Entiti itu kemudiannya akan diabaikan oleh sistem yang memerlukannya.
player.components.health = nil -- entity is "dead"Pengurus Dunia dan Entiti
Objek Dunia menyimpan semua entiti dan sistem, melakukan lelaran pada sistem setiap tik, serta menyediakan API pertanyaan entiti.
Membuat Pertanyaan Entiti Mengikut Komponen
Sediakan fungsi pertanyaan yang mengembalikan semua entiti yang mempunyai semua komponen yang dinyatakan.
local function query(world, ...)
local required = {...}
local result = {}
for _, e in ipairs(world.entities) do
local ok = true
for _, comp in ipairs(required) do
if not e.components[comp] then ok = false; break end
end
if ok then result[#result+1] = e end
end
return result
endPraset
Praset ialah jadual templat komponen. Wujudkan entiti baharu daripada praset dengan menyalin templat secara mendalam.
Kelebihan Berbanding Pewarisan
- Tiada hierarki mendalam.
- Tingkah laku dicampurkan semasa masa jalan.
- Ciri mudah ditambah atau dialih keluar.
- Dipacu data daripada fail konfigurasi.
Soalan Reka Bentuk Komponen
Dalam reka bentuk berasaskan komponen, apakah yang dilakukan oleh System?
Ulang Kaji: Penskripan Berasaskan Komponen
Entiti ialah jadual komponen. Sistem memproses entiti yang mempunyai komponen yang diperlukan. Seni bina yang dinyahgandingkan dan dipacu data ini lebih fleksibel berbanding hierarki pewarisan yang mendalam serta berfungsi secara semula jadi dalam Lua.
Pelajari Lua dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “Penskripan Berasaskan Komponen” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Lua Academy, termasuk “Penskripan Berasaskan Komponen”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Penskripan Berasaskan Komponen”?
Reka entiti permainan sebagai jadual dengan komponen tingkah laku dalam Lua. Anda berlatih Lua Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Lua Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Lua Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Penskripan Berasaskan Komponen” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Sistem Peristiwa dalam Lua
- Penskripan Berasaskan Komponen
- Tingkah Laku Kecerdasan Buatan dengan Mesin Keadaan
- Konfigurasi Dipacu Data dan Muat Semula Segera