忍者ブログ
Admin / Write / Res
このブログでは、ゲーム作成後記やFLASH作成状況・方法等を載せていこうかと思っています。
<< 08   2017/09   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30     10 >>
[31]  [30]  [29]  [28]  [27]  [26]  [25]  [24]  [23]  [22]  [21
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

や~~~っと念願の(?)セーブ機能がつけられましたw
色々調べまくって試行錯誤の末・・・・です。
 

拍手[7回]



参考サイト様は「ぬこちゅーさん」「区立パラフラ予備校」「閃光絵巻」からです。

で、具体的にわかったこと。
so.dataの前には_root.を付けたほうがいい!

この下からはWanpa様を参考に脱出ゲームをつくっている場合を想定しています。
 


 


変数の保存は「main_window」スプライトの初期化で変数を宣言しているもの全て
と考えていいと思います。
1.アイテムの変数
2.アイテムの状態
3.箱やら扉やらを開けた変数
(4.部屋の状態  ・・・3Dで作成されている場合部屋の状態がいくつか用意しなくてはならない)

の大まかに3つくらいかな。

保存例としてはセーブボタンを用意して
on(release){
 so = SharedObject.getLocal("game","/");   ←作成
 _root.so.data.room1state = _root.room1_state;  ←部屋の状態(3Dの場合だけ・・・?)
 
 _root.so.data.stateichigo = _root.ichigo_state;  ←イチゴアイテムの状態
 _root.so.data.ichigo1 = _root.ichigo1;        ←1番のイチゴをgetしたかどうか

 _root.so.data.getcleaner = _root.get_cleaner;  ←クリーナーをgetしたかどうか

 _root.so.data.openbox = _root.open_box;     ←2階の箱をあけたかどうか

 _root.so.data.check = 1;   //チェック用変数
 _root.so.flush();

 this.gotoAndPlay("save_action");    ←セーブをしたときの動作
 }

ざっとこんなかんじです。変数はもっとあります。
ゲームに必要な変数の分用意します。
あっでも、私は箱や絵のcount変数は保存対象にしていません。
絵も取ったかどうかの判断ができればいいだけですので。


ちなみにセーブボタンはメイン(_rootの直下?)に置いています。
いわゆる「main_window」や「item_window」と同じタブです。
セーブアクションもメインに置いています。

で、スタートとロードですが。
「title」スプライトに用意します。
スタートボタンには
on (release){
 var so = SharedObject.getLocal("game","/"); //作成
 _root.so.clear();

 _root.so.data.check = 0;
 _root.gotoAndPlay("start");
}

ロードボタンには
on (release){
 var so = SharedObject.getLocal("game","/"); //読み込み

 if(_root.so.data.check != 1){  //データ存在チェック
  trace("データなし");
 }else{
  _root.gotoAndPlay("load_start");
 }
}

ここで、「start」と「load_start」の2種類がありますが、私は念のために2種類作っています。
「メイン」にstartラベルとload_startラベルの2種類作っていますが、内容は同じです。
para_savegamen1.png
画像をクリックすると拡大画面が出ます







どちらも「main_window」を呼び出すので結局は初期化のところで判別します。
判別方法は
_root.so.data.checkの値です。

if(_root.so.data.check == 1){  //データ存在チェック
 _root.room1_state = _root.so.data.room1state;

 _root.ichigo_state = _root.so.data.stateichigo;
 _root.ichigo1 = _root.so.data.ichigo1;
 
 _root.get_cleaner = _root.so.data.getcleaner;

 _root.open_box = _root.so.data.openbox;
  
 if(_root.room1_state == 2){
  this.gotoAndPlay("room1-hiyoko");
   }else if(_root.room1_state == 3){
  this.gotoAndPlay("room1-tumiki");
 }else if(_root.room1_state == 4){
  this.gotoAndPlay("room1-hikoukinon");
   }else{
  this.gotoAndPlay("room1");
 }

}else if(_root.so.data.check == 0){
_root.room1_state = 1;
_root.select_item = "no";

_root.ichigo_state = 0;
_root.ichigo1 = false;

_root.get_cleaner = false;
_root.open_box = false;
  
}

_root.so.data.checkが1ならばローカルデータ領域にある_root.so.data.変数の値を_root.変数に代入
_root.so.data.checkが0ならば初期化変数を宣言する。

 if(_root.room1_state == 2)のif文は私の場合、ある1場面につき4種類あるためこのようにしています。
数値は視点切り替え時に忘れずに数値を変えておく必要があります。
・room2からroom1
・room4からroom1、
・飛○をとった後戻るボタンを押したとき
等・・・・。

今回最初の画面だけで以下の4種類です。
最初の状態
_root.room1_state = 1;   
○こが移動したとき
_root.room1_state = 2;
つ○を渡したとき
_root.room1_state =3;
飛○をとったとき
_root.room1_state =4;

こうしてある1場面の部屋の状態を変数として保持しておき、ロードする際に先程のif文で画面を飛ばせばOK。

参考になればと載せました。


どこにも細かくは載っていなく四苦八苦しました。

参考になれば幸いです。


追記
上記の部屋の状態を応用すれば、保存した画面でロードスタートができそうです。
ただしこれをするためには、
1.画面を移動するたびに変数の数字を変える。
例えば、視点変更の変数を_root.siten = 1;とし、これを初期値とする。
部屋や視点が変更するたびにこの数値を変える。
room2は2
room3は3
room4は4
飛行機アップ画面は5

などなど・・・・

2.変数を保存
保存プログラムに以下を追加
  _root.so.data.site = _root.siten;


3.ロードするとき
データ存在をチェックのif文の中にif文で保存画面に飛ばす

if(_root.so.data.check == 1){  //データ存在チェック
 _root.siten = _root.so.data.siten;

 _root.ichigo_state = _root.so.data.stateichigo;
 _root.ichigo1 = _root.so.data.ichigo1;
 
 _root.get_cleaner = _root.so.data.getcleaner;

 _root.open_box = _root.so.data.openbox;

// ここで保存画面に飛ばす  
 if(_root.siten == 2){
  this.gotoAndPlay("room2");

   }else if(_root.siten == 3){
  this.gotoAndPlay("room3");

  }else if(_root.siten == 4){
  this.gotoAndPlay("room4");
 
   }else if(_root.siten == 5){  

  this.gotoAndPlay("room1_hikouki");    //変数5に設定した画面へ
  //以下それぞれの変数へ
     ・
     ・
     ・
   }else{

  this.gotoAndPlay("room1");
 }

//保存データが無い場合
}else if(_root.so.data.check == 0){
_root.siten = 1;
_root.select_item = "no";

_root.ichigo_state = 0;
_root.ichigo1 = false;

_root.get_cleaner = false;
_root.open_box = false;
  
}

if分を作るのが面倒そうですが、これでできるんではないかと・・・。
エクセル等でリストを作るとわかりやすいかもしれませんね。

ただし私も実装しているわけではないので、保証できません(;^ω^)
それに数値を間違えると、違う画面に飛ばされたりと確認事項が多そうです。
なんにしてもセーブとロードは面倒です。

PR
この記事にコメントする
Name
Title
Color
Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret(管理人のみ表示)
セーブ機能
はじめまして。
非常に参考になりました。
セーブデータは、パソコンの内部のどこかに格納されるようです。
ball9 2013/10/30(Wed)15:12:51 編集
無題
見本のファイルがあれば100点

無いので分かりづらいです・・・。
NONAME 2011/09/12(Mon)16:44:41 編集
Re:無題
コメントありがとうございます。

見本のファイルですが、記事自体が脱出ゲームのLogHouseをベースに説明しています。ファイルを載せるとなると画像ファイルも載せないとなりませんので、ご勘弁ください。


私も見本ファイルなしで参考サイト様を参考にして作成しましたので、paraflaやゲーム構成、変数等を理解できれば作れると思います。
頑張ってください!!
BlueSolt  【2011/09/13 14:03】
プロフィール
HN:
BlueSolt
性別:
女性
自己紹介:
脱出ゲームとメタセコで3Dモデル作成にはまった主婦です。皆さんお楽しみくださいませ。

無料占い | プルモア
Presented by 無料占いプルモア
カウンター
カレンダー
08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Twitter
スポンサード リンク
最新CM
[10/30 ball9]
[08/29 みー]
[05/01 しののま]
[04/12 しののま]
[04/08 りんまる]
Copyright ©  BlueSolt Blog All Rights Reserved.
*Material by Pearl Box  * Template by tsukika
忍者ブログ [PR]