スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

デバイスの読込方法

シャイニングブラッドの再再再再ピアレビューをだしてみました
もう他に未公開で、レビュー待ちの人はいなそうなので
ビリッケになってしまったみたいです・・・寂しい

今回の差し戻し原因はデバイス関係のバグ(コード 7 )でした
これは本来差し戻し対象としないものらしいのです
http://forums.xna.com/forums/t/37294.aspx

まあ、差し戻されたのはどうにもならないので
めげずに修正です
修正方法は
デバイスの読込前にIsActiveをチェックし
ウインドウが開いていたらデバイスの読込を行わない
で待機しておきます
これだけです

ちなみに、データのセーブ、ロードは
下記のようなコードで自分は実装しています



public class InitialData
{
public static bool stotageFlag;
StorageDevice storageDevice;

public bool screenMode;
public bool sound;
public float mouseSpeed;

public InitialData()
{
}
//ロード
public void LoadInitialData()
{
stotageFlag = true;
try
{
Guide.BeginShowStorageDeviceSelector(this.GetStorageDeviceRead, null);
}
catch (Exception) {
stotageFlag = false;
}
}
public void GetStorageDeviceRead(IAsyncResult result)
{
storageDevice = Guide.EndShowStorageDeviceSelector(result);
InitialData id;
if (storageDevice != null && storageDevice.IsConnected)
{
using (StorageContainer container = storageDevice.OpenContainer("ShiningBlood"))
{
filePath = Path.Combine(container.Path, @"userdata.xml");
if (File.Exists(filePath))
{
//XMLから読込
XmlSerializer xsInitialData = new XmlSerializer(typeof(InitialData));
TextReader readerInitialData = new StreamReader(filePath);

id = (InitialData)xsInitialData.Deserialize(readerInitialData);
screenMode = id.screenMode;
sound = id.sound;
mouseSpeed = id.mouseSpeed;
readerInitialData.Close();
}
else
{
//新規の場合初期化
screenMode = true;
sound = true;
mouseSpeed = 50;
}
}
}
stotageFlag = false;
}
//セーブ
public void SaveInitialData(InitialData initialdata)
{
stotageFlag = true;
//デバイスが選択されているかチェック
if (storageDevice != null && storageDevice.IsConnected)
{
using (StorageContainer container = storageDevice.OpenContainer("ShiningBlood"))
{
filePath = Path.Combine(container.Path, @"userdata.xml");
XmlSerializer xsInitialData = new XmlSerializer(typeof(InitialData));
TextWriter writerInitialData = new StreamWriter(filePath);
xsInitialData.Serialize(writerInitialData, this);
writerInitialData.Close();
}
stotageFlag = false;
}
else
{
//MUが抜かれた場合には再度デバイス選択UIを表示
Guide.BeginShowStorageDeviceSelector(this.GetStorageDevice, null);
}
}
public void GetStorageDevice(IAsyncResult result)
{
// 結果をもとにデバイス選択UIを終了してストレージデバイスを取得します
StorageDevice storageDevice = Guide.EndShowStorageDeviceSelector(result);
if (storageDevice != null && storageDevice.IsConnected)
{
using (StorageContainer container = storageDevice.OpenContainer("ShiningBlood"))
{
XmlSerializer xsInitialData = new XmlSerializer(typeof(InitialData));
string filePath = Path.Combine(container.Path, @"userdata.xml");
TextWriter writerInitialData = new StreamWriter(filePath);
xsInitialData.Serialize(writerInitialData, this);
writerInitialData.Close();
}
}
stotageFlag = false;
}
}


非同期でデバイス選択画面がでるので
stotageFlagがfalseになるまで待機する必要があります
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

プロフィール

TEA(てぃあ)

Author:TEA(てぃあ)
親サイト:
フリーのゲームがダウンロードできます
主にシューティング系

最新記事
最新コメント
カテゴリ
PSP Vita
カウンター
ジャスティスレギオン 無料ダウンロード
インディーズPSPVitaゲーム
リンクや作った物
検索フォーム
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。