こんにちは。
今、C#+DXLibでゲームを作っています。
構成は、まずメインループがあり、そこには演算処理・描画処理などの部分があります。
それらの部分に、別のファイルにあるタイトル画面の処理やダンジョンの処理などを状況に応じて読み込んで実行していきます。
これらのファイルの中で、一々キーボードの読み込みやウィンドウの作成などのクラスを読み込んでいるのですが、
どのファイルでも使うものなので、もしできればメインループで一度読み込んでOKということにしたいのです。
そういうことはできるでしょうか?
C#を始めたばかりなので、基本的なことがわかっていないのだと思います。
やり方があれば教えてください。
あと、もし「こうしたほうがいいよ」というものがあれば、それも教えていただけると嬉しいです!
ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…
クラスのインスタンスを別のクラスでも使いたいということでしょうか? C#の文法レベルの理解度が分からないので教えていただけますか?
>一々キーボードの読み込みやウィンドウの作成などのクラスを読み込んでいる
ここが曖昧な表現なので質問の意図を掴みかねています。
>一々キーボードの読み込みやウィンドウの作成などのクラスを読み込んでいる
ここが曖昧な表現なので質問の意図を掴みかねています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…
C#は高校の頃に少しだけやっていて、Helloworldから簡単な計算のコードがかける程度です。最近は構造体を勉強しました。
>一々キーボードの読み込みやウィンドウの作成などのクラスを読み込んでいる
メインループとは別のファイルに、キーボードの処理をするクラスが有ります。
そのクラスのインスタンスを、メインループから呼んでいるタイトル・ダンジョン・街などの各ファイルで逐一作成し、
メソッドを利用しています。
この処理をなくし、メインループで一度インスタンスを作成しそれを各シーンで使い回せれば…と思っています。
これはふつうのコトなのでしょうか?インスタンスを何度も作ると無駄があってよくないのかなあと思っていたのですが、
これが普通であればこのままで大丈夫です。
このあたりの感覚もまだ全然なくて…説明もわかりづらくて申し訳ありません。
お手数ですが何卒よろしくお願いいたします!
>一々キーボードの読み込みやウィンドウの作成などのクラスを読み込んでいる
メインループとは別のファイルに、キーボードの処理をするクラスが有ります。
そのクラスのインスタンスを、メインループから呼んでいるタイトル・ダンジョン・街などの各ファイルで逐一作成し、
メソッドを利用しています。
この処理をなくし、メインループで一度インスタンスを作成しそれを各シーンで使い回せれば…と思っています。
これはふつうのコトなのでしょうか?インスタンスを何度も作ると無駄があってよくないのかなあと思っていたのですが、
これが普通であればこのままで大丈夫です。
このあたりの感覚もまだ全然なくて…説明もわかりづらくて申し訳ありません。
お手数ですが何卒よろしくお願いいたします!
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…
インスタンスの生成は最低限に抑えるべきですので、1つのインスタンスが理想です。
メインから参照で受け渡すか、シングルトンにすべきかと思います。
「C# - Singleton(たった1つのインスタンス)」
http://hccweb1.bai.ne.jp/tsune-1/CSharp/singleton.html
インスタンスが複数あるとバグにも悩まされると思います。
あと、ちゃんとC#の文法やオブジェクト指向を学ばれたほうが良いと思いますよ。
【補足】
各クラスがキーボードのクラスのインスタンスを受け取ってよいかという抽象化設計的な問題もありますけど。
メインから参照で受け渡すか、シングルトンにすべきかと思います。
「C# - Singleton(たった1つのインスタンス)」
http://hccweb1.bai.ne.jp/tsune-1/CSharp/singleton.html
インスタンスが複数あるとバグにも悩まされると思います。
あと、ちゃんとC#の文法やオブジェクト指向を学ばれたほうが良いと思いますよ。
【補足】
各クラスがキーボードのクラスのインスタンスを受け取ってよいかという抽象化設計的な問題もありますけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…
〉ちゃんとC#の文法やオブジェクト指向を学ばれたほうが良いと思いますよ。
ありがとうございます!そうですよね、今ゲームを作っているのは、c#の学習のためなんです…何か楽しいことがないと続かないもので…
〉メインから参照で受け渡すか、
これは「参照渡し」のことでしょうか?
今調べてきたのですが、参照渡しは呼び出した変数をメソッド内から書き換えたいために利用するのですよね?
インスタンスを書き換えることはないと思うのですが、値渡しではいけないのでしょうか?
シングルトンについては家に帰ってから中身を理解しようと思います。いつもありがとうございます!
ありがとうございます!そうですよね、今ゲームを作っているのは、c#の学習のためなんです…何か楽しいことがないと続かないもので…
〉メインから参照で受け渡すか、
これは「参照渡し」のことでしょうか?
今調べてきたのですが、参照渡しは呼び出した変数をメソッド内から書き換えたいために利用するのですよね?
インスタンスを書き換えることはないと思うのですが、値渡しではいけないのでしょうか?
シングルトンについては家に帰ってから中身を理解しようと思います。いつもありがとうございます!
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…
参照で受け取っても変更できない方法はあります。とう言うかクラスならカプセル化で出来ますよ。
c#を忘れてきているので、constはクラスに対して使えなかったと記憶してるんですが他にも方法があるかもしれません。
c#を忘れてきているので、constはクラスに対して使えなかったと記憶してるんですが他にも方法があるかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ゲーム作成で、汎用的なメソッドの呼び出しを一々したくないのですが…
カプセル化もよくわかってないので今後調べます!
シングルトンは(もう出来上がっていますし)使いやすそうではあるのですが、きっとこれをそのまま使って満足してしまいそうなので今後は参照渡しとか積極的に使っていきたいと思っています。
オブジェクト指向は言葉とイメージだけなんとなくわかっていたレベルだったのですが、調べてみたらすごく面白そうだったので、今作ってるものをエセオブジェクト指向っぽくしていってみたいです。
いつもお世話になっております、ありがとうございました!
シングルトンは(もう出来上がっていますし)使いやすそうではあるのですが、きっとこれをそのまま使って満足してしまいそうなので今後は参照渡しとか積極的に使っていきたいと思っています。
オブジェクト指向は言葉とイメージだけなんとなくわかっていたレベルだったのですが、調べてみたらすごく面白そうだったので、今作ってるものをエセオブジェクト指向っぽくしていってみたいです。
いつもお世話になっております、ありがとうございました!