Bevy
ទំព័រនេះត្រូវបានបកប្រែពីភាសាអង់គ្លេស។ ប្រសិនបើទាំងពីរខុសគ្នា ទំព័រភាសាអង់គ្លេសគឺត្រឹមត្រូវ។ អានទំព័រភាសាអង់គ្លេស
bevy_lingara គឺជាកម្មវិធីជំនួយ Bevy មួយដែលដំណើរការលើស្នូលអ្នកលេងរបស់ Lingara។ បន្ថែមវាទៅក្នុងកម្មវិធីរបស់អ្នក ប្រាប់វាពីរបៀបទៅដល់ម៉ាស៊ីនមេរបស់អ្នកដើម្បីយកតូខិន ហើយអានអ្វីដែល Lingara ផ្ញើមកជា Message ធម្មតារបស់ Bevy។
បន្ថែមកម្មវិធីជំនួយ
បន្ថែម crate ទៅក្នុងហ្គេមរបស់អ្នក បន្ទាប់មកបន្ថែម LingaraPlugin ទៅក្នុងកម្មវិធីរបស់អ្នកជាមួយ LingaraConfig មួយ។
យកតូខិនពីម៉ាស៊ីនមេរបស់អ្នក
កម្មវិធីជំនួយមិនដែលកាន់សម្ងាត់ទេ។ នៅពេលវាត្រូវការតូខិន វាសុំពីម៉ាស៊ីនមេផ្ទាល់ខ្លួនរបស់អ្នក ដែលបង្កើតតូខិនមួយដោយប្រើ កញ្ចប់ឧបករណ៍ម៉ាស៊ីនមេ ហើយឆ្លើយតបដោយតូខិន និងពេលផុតកំណត់របស់វា។
មានវិធីពីរយ៉ាងដើម្បីឆ្លើយតប។ ក្នុងករណីធម្មតា សូមផ្ដល់ផ្លូវតូខិន (token route) នៃម៉ាស៊ីនមេរបស់អ្នក និង header ណាមួយដែលសម័យរបស់អ្នកត្រូវការ ទៅឲ្យការកំណត់ ហើយកម្មវិធីជំនួយនឹងហៅវាជំនួសអ្នក។ ឬទុកផ្លូវនោះចោលដោយមិនកំណត់ ហើយឆ្លើយតប Message LingaraTokenNeeded នីមួយៗដោយខ្លួនឯងជាមួយ ProvideToken ដោយប្រើការចូលគណនីណាក៏ដោយដែលហ្គេមរបស់អ្នកមានស្រាប់។
អានព្រឹត្តិការណ៍ម្ដងក្នុងមួយហ្វ្រេម
ស្នូលដំណើរការ I/O បណ្ដាញរបស់វានៅលើ thread ផ្ទាល់ខ្លួនរបស់វា ហើយមិនដែលហៅចូលទៅក្នុងកូដរបស់អ្នកទេ។ កម្មវិធីជំនួយបង្ហូរជួររបស់វាម្ដងក្នុងមួយហ្វ្រេម ហើយប្ដូរអ្វីដែលបានមកដល់ទៅជា Message ដែលប្រព័ន្ធ (system) របស់អ្នកអានដូចនឹង Message ផ្សេងទៀតដែរ៖
LingaraEventReceivedសម្រាប់ព្រឹត្តិការណ៍អំពីអ្នកលេង ដូចជាផែនការមេរៀនមួយរួចរាល់។NpcTranscriptដែលជា component មួយនៅលើតួអង្គនីមួយៗ ដែលរីកធំឡើងខណៈពេលការឆ្លើយតបកំពុងស្ទ្រីមចូល (សូមមើល ការសន្ទនាជាមួយ NPC)។PracticeFinishedនៅពេលវគ្គហាត់មួយបញ្ចប់ (សូមមើល លទ្ធផលនៃការហាត់)។
គ្មានអ្វីរារាំងហ្វ្រេមណាមួយទេ៖ បណ្ដាញយឺតបង្ហាញខ្លួនជា Message ដែលមកដល់យឺតបន្តិចប៉ុណ្ណោះ។
Bevy
cargo add bevy_lingara@0.1.0-alpha.6Bevy
/// The common case: the plugin POSTs to your own server's token route, with
/// your game's session as a header, and reads `{token, expires_at}`.
fn lingara_config(session_header: bevy_lingara::lingara_embed::Header) -> LingaraConfig {
LingaraConfig::new()
.token_endpoint("https://game.example.com/lingara-token", vec![session_header])
.source_lang("en")
}
/// Or keep the session in ECS: leave the token endpoint unset, answer each
/// `LingaraTokenNeeded` with what your server returned.
fn answer_token_requests(mut needed: MessageReader<LingaraTokenNeeded>, mut provide: MessageWriter<ProvideToken>) {
for _request in needed.read() {
let (token, expires_at) = fetch_from_your_server();
provide.write(ProvideToken::new(token, expires_at));
}
}Bevy
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(LingaraPlugin::new(lingara_config(header)))
.add_systems(Update, on_lingara_event)
/// The plugin drains Lingara's events once per frame: read them as Messages.
fn on_lingara_event(mut events: MessageReader<LingaraEventReceived>) {
for LingaraEventReceived(event) in events.read() {
info!("{}: {}", event.event_type, event.data_json);
}
}