Pendahuluan
Beberapa tahun yang lalu saya datang dengan ide untuk menulis mesin
Visual Novel di WinForms. Mengapa menggunakan WinForms? Karena saya tidak tahu caranya. Secara berkala, mesin telah menerima dan menerima pembaruan hingga hari ini. Selama waktu ini, sedikit kode yang berguna telah terakumulasi yang dapat digunakan di mana-mana.
Membagi teks menjadi beberapa baris
Sprite dan PictureBox
Seperti yang Anda ketahui,
PictureBox memiliki dua lapisan gambar. BackgroundImage & Gambar. Pada versi pertama mesin, saya menggunakan sekitar 5 kotak untuk menggambar sprite. Sistem seperti itu memiliki beberapa kelemahan besar:
- Masalah dengan transparansi karena pewarisan multi-level
- Susun formulir saat memperbarui
Kemudian, saya membuat algoritma melalui Grafik, sehingga menjadi mungkin untuk menggambar sprite sebanyak yang Anda suka di mana saja.
PictureBox ALeft; Bitmap SpriteListPic;
LuaInterface dan fitur coba-tangkap seperti
Sedikit tentang pengalaman dengan LuaInterface:
- Tambahan untuk artikel tentang LuaInterface tentang LuaTable: Untuk sebagian besar hal, Anda dapat melakukan tanpa fungsi hanya menggunakan tabel.
lua.NewTable("Scene");
- Masalah dengan kebocoran memori saat bekerja dengan tabel
string TableReaderS(string Table, string Key) { string Ret = ""; using (LuaTable tabx = lua.GetTable(Table)) { Ret = (string)tabx[Key]; } return Ret; } int TableReaderI(string Table, string Key) { int Ret = -1; using (LuaTable tabx = lua.GetTable(Table)) { Ret = (int)(double)tabx[Key];
Setiap kali Anda memanggil GetTable , Anda mendapatkan objek CLR baru yang mereferensikan tabel Lua yang dirujuk oleh variabel Lua global ini.
- Jika Anda tidak yakin apa nilai dalam tabel sama sekali:
try { Size = TableReaderI("Scene", "Image" + Convert.ToString(num) + "Scale"); } catch (Exception ex) { Size = 2; }
Lua akan mengembalikan nilai, tetapi bukan fakta bahwa itu akan menjadi angka. Karena itu Tangkapan (Pengecualian) . Opsi dengan double.TryParse tidak cocok di sini, karena lua.GetTable tidak mengembalikan string, tetapi tipe tertentu, yang LuaTable dan dapat dikonversi ke string jika diberi nilai seperti itu, juga dengan angka.