Python で書かれたゲームがあり、Panda3d を使用しています。ここで、再起動の可能性が必要です。つまり、ゲームの現在のインスタンスが存在しなかったかのように、メインが再度実行される結果でボタンを押したいと考えています。
これを行う簡単な方法はありますか?
Python で書かれたゲームがあり、Panda3d を使用しています。ここで、再起動の可能性が必要です。つまり、ゲームの現在のインスタンスが存在しなかったかのように、メインが再度実行される結果でボタンを押したいと考えています。
これを行う簡単な方法はありますか?
あまり。Panda3D は実際にはこの抽象化を行いません。それはアプリケーション開発者次第です。「再起動」が実際に何を意味するかは、特定のケースによって異なります。既存のウィンドウを閉じてから、新しいウィンドウを開きますか? そうでない場合は、多くの Panda3D オブジェクトを所定の位置に保持する必要があり、ShowBase インスタンスを単純に再作成できないことを意味します。しかし、メモリにロードされたモデルをアンロードしますか? UI オブジェクトのジオメトリをグラフィックス カードに再送信しますか?
そのため、特定のニーズに応じて、再起動が必要なオブジェクトをアンロードして削除し、再作成する必要があります。オブジェクト指向のアプローチを使用してオブジェクトを適切に構成する場合、これは簡単なはずです。つまり、そのゲームに固有のものをアンロードする Game オブジェクトに unload() を実装し、そのオブジェクトへの参照を手放します (ガベージ コレクションされる)、新しいものを作成します。(循環参照に注意してください! 循環参照がある場合、スコープ外に出た場合でも、オブジェクトの古いインスタンスがメモリ内に保持される可能性があります。)
再起動したい場合は、関数を手動で作成し、必要なことを実行させる必要があります。まさにこのことについて、パンダの Web サイトに投稿があります。