C#, C♯, C#相談室 Part59at TECH
C#, C♯, C#相談室 Part59 - 暇つぶし2ch189:デフォルトの名無しさん
10/05/29 02:44:47
FreeTrain EX Avという、A列車で行こう4のクローンになりたいゲームを作ってるのですが。
URLリンク(sourceforge.jp)
(最新βが2.1.1.5で、ソースは直下trunk/以下が該当します)

パラメータをリアルタイム表示するウィンドウを追加して行ってたら、データセーブ時に特定の
ウィンドウをあけっぱなしているとエラーが起こるようになってしまいました。
>アセンブリ 'FreeTrain.Core, Version=2.1.1.5, Culture=neutral, PublicKeyToken=null' の型
> 'freetrain.world.rail.StationInformationWindow' はシリアル化可能として設定されていません。
データのセーブロードはBinaryFormatterを使ったシリアライズでしています。
ウィンドウのFormをシリアライズしようとしてるわけではなく、パラメータの変化をイベント起こして
もらって表示をリフレッシュするために使ってるイベントハンドラが参照を呼んでこのウィンドウ
のシリアライズをしたがっているみたいなのです。

core/world/rail/Station.csが駅本体部分で、ここでイベントの宣言を
public delegate void StationCounterListener();
public StationCounterListener onStationChange;
とやってて、駅に乗降があったときにonStationChange();してます。

パラメータを表示してるウィンドウはcore/controllers/rail/StationInformationWindow.csで
public StationInformationWindow( Station st ) {
this.station = st;
InitializeComponent();
onUpdate();
station.onStationChange += new StationCounterListener(onUpdate);
}
ここでstation.onStationChange += の行をコメントアウトするとエラーがなくなります。
しかし他にもイベントハンドラでリアルタイム書き換えしてるウィンドウ多数あるのにエラーに
なってなくて、なぜこのウィンドウだけなるのかが分からないのです。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch