エラーの確認の仕方
例えばPyxelの01_hello_pyxel.pyを動かそうとしたとします。
その時に以下のように改変していると
01_hello_pyxel_edit.py
import pyxel
class App:
def __init__(self):
pyxel.init(160, 120, title="Hello Pyxel")
pyxel.image(0).load(0, 0, "assets/script.png")
pyxel.run(self.update, self.draw)
def update(self):
if pyxel.btnp(pyxel.KEY_Q):
pyxel.quit()
def draw(self):
pyxel.init(200, 200)
pyxel.cls(0)
pyxel.text(55, 41, "Hello, Pyxel!", pyxel.frame_count % 16)
pyxel.blt(61, 66, 0, 0, 0, 38, 16)
App()
このようなエラーが出ます。
line 8, in __init__
pyxel.run(self.update, self.draw)
pyo3_runtime.PanicException: Unwrapped panic from Python code
このエラーをそのままググるとRustとかの記事が出てきますが、これは簡単に治すことができます。
どうしてエラーが出たのか
これが出てくる理由は_def_draw_の部分に_pyxel.init_を入れてしまっているからです。このファイルの実行動作は_def_init_で_pyxel.run_を使って、_draw_と_update_を実行しています。そして_01_hello_pyxel_edit.py_ではdrawの中に_pyxel.init_を入れています。この状態では描画するたびに初期化を繰り返すのでエラーが出てます。
わかっていないこと
どうしてこのように_pyxel.run_で描画する際に初期化することでエラーが出てるのかはわかっていません。とりあえず何回も処理する部分には_pyxel.init_を入れない方が良さそうです。