Lua Academy · Pelajaran

Penskripan Berasaskan Komponen

Reka entiti permainan sebagai jadual dengan komponen tingkah laku dalam Lua.

Pelajaran 2 daripada 413 langkah

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
end

Skrip 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](...)
end

Mengalih 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
end

Praset

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.

Percuma untuk bermula

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

  1. Sistem Peristiwa dalam Lua
  2. Penskripan Berasaskan Komponen
  3. Tingkah Laku Kecerdasan Buatan dengan Mesin Keadaan
  4. Konfigurasi Dipacu Data dan Muat Semula Segera
← Kembali ke Lua Academy