スクリプトの開発その2

アバター
せんちゃ
記事: 50
登録日時: 14年前
住所: 江別市東野幌町
連絡を取る:

スクリプトの開発その2

投稿記事 by せんちゃ » 11年前

いつまでもスクリプトだけ書いていても全く面白くないので
実際にDXライブラリと連携させながらその都度必要な機能を足していくことにする。
ゲームのシステム層もある程度仕組みが必要になってくるしね。

まず画像配置・オブジェクトの演出処理などはスクリプトに追い出したい

CODE:

	public class SceneTitle : SceneBase{
		public override void init(){
			base.init();
			loadAssembly( "resource/script/title/title.ss" );
		}
		public override void onUpdate(){
			base.onUpdate();
		}
		public override void onDraw(){
			base.onDraw();
			DX.DrawString( 0 , 0 , "Title" , DX.GetColor( 255 , 255 , 255 ) );
		}
	}
シーン側は読み込むリソースファイルだけ知っていれば良い感じにする
シーンクラスも継承しないで読み込むリソースファイルの対応表テーブルを作ってしまって
一か所にしてしちゃってもいいかもしれない。

シーン基底の処理では

CODE:

		public void onInit(){
			m_assemblyInfo	= null;
			m_lyt			= LayoutManager.Instance.CreateLayout( "SceneLayout" );
			m_nextScene		= 0;
			init();
			m_driver.execFunc( "init" );
		}
		public virtual void onUpdate(){
			if( m_driver == null ) return;
			m_driver.execFunc( "update" );
			m_driver.update_coroutine();
		}
といった感じにスクリプトを呼び出す


そしてスクリプト側の実装

CODE:

int lyt;
void init(){
	lyt = Lyt_Get( "SceneLayout" );
	Lyt_LoadGraph( lyt , "resource/img/title/00.png" , "背景"   );
	Lyt_LoadGraph( lyt , "resource/img/title/02.png" , "射命丸"  );
	Lyt_LoadGraph( lyt , "resource/img/title/01.png" , "タイトルロゴ" );
	Lyt_LoadGraph( lyt , "resource/img/title/press_to_enter.png" , "ぷれすとぅーえんたぁ" );
Lyt_Get(),Lyt_LoadGraph()はシステムで定義された関数。
レイアウト参照を取得するのと指定のレイアウトにテクスチャをロードする。

CODE:

		private void Lyt_Get( ss.SSDriver d ){
			string objectName = d.popMemory().string_value;
			for( int i = 0 ; i < LayoutManager.Instance.rootLayout.childCount ; i++ ){
				if( LayoutManager.Instance.rootLayout[i].ObjectName == objectName ){
					d.Return( LayoutManager.Instance.rootLayout[i].HandleID );
					return;
				}
			}
		}
		private void Lyt_LoadGraph( ss.SSDriver d ){
			Console.WriteLine( "Lyt_LoadGraph called!!" );
			string objectName = d.popMemory().string_value;
			string fileName   = d.popMemory().string_value;
			int    lytHandle  = (int)d.popMemory().value;
			LayoutObject  lyt  = LayoutManager.Instance.GetLayout( lytHandle );
			lyt.Lyt_LoadGraph( fileName , objectName );
		}
テクスチャを描画するオブジェクトもスクリプトから制御する

CODE:

	bg = Lyt_EntryPictObj( lyt , "背景" );
	Lyt_SetPictPos( bg , 320 , 240 );
Lyt_EntryPictObjで指定のレイアウト参照に画像描画用オブジェクトを生成する。
Lyt_SetPictPosで画像の座標を変更
この画像の座標はそのうちPSDレイアウトのコンバータでも作って初期位置を定義した上で
オフセット座標を渡す感じで制御したいかもしれない。

と、システムAPIに頼りっぱなしだがこれだけでもとりあえず画像が制御できる。
まだまだ苛め貫かなければね

コメントはまだありません。