質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

プログラムを短くしたい

L_KemonoFriends
L_KemonoFriends

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

3回答

0評価

0クリップ

691閲覧

投稿2021/11/02 05:33

編集2021/11/08 09:06

前提・実現したいこと

現在、assetのeasysaveでセーブデータを保存しようとしてます。
質問用タグ1~2の中を関数化してプログラムを短くしたいです。
str2とstr4を文字列の変数で実装する方法が存在する場合に教えて頂きたいです。
str2とstr4が実装できれば質問用タグ1~2の間を関数にできます。

具体的には下記の2点が行えると嬉しいです。

spt = obj.GetComponent<InputBox>();
<InputBox>をstringの変数で定義したい
spt = obj.GetComponent<str2>();のように置き換えられると嬉しい。

ES3.Save<string>(str0 , spt.ESSTR001 , str3);
のESSTR001をstringの変数で定義したい
ES3.Save<string>(str0 , spt.str4 , str3);のように置き換えられると嬉しい。

方法が存在しない場合は存在しないと教えて欲しいです。

発生している問題・エラーメッセージ

なし

該当のソースコード

C#

using System.Collections; using System.Collections.Generic; using UnityEngine; public class SaveScript : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } //指定されたメニュー内のデータを全てセーブする //save_load=0 セーブ //save_load=1 ロード public void MenuAllSave(int menu_num , string sl_flag ) { if(menu_num == 1)//メニュー1のデータを全部保存する { InputBox spt; //スクリプト名 const string str0 = "x1"; //key const string str1 = "入力欄"; //スクリプトがアタッチされたオブジェクト名 //const string str2 = "InputBox"; //スクリプト名 //const string str2 = spt.GetType(); // const string str3 = "menu001.es3"; //セーブファイル名 //const string str4 = "ESSTR001"; //読み込む変数名 const string str5 = "わーい"; //初Load時の値 //ーーーー質問用タグ1ーーーー GameObject obj = GameObject.Find(str1); spt = obj.GetComponent<InputBox>(); if(sl_flag == "save") { ES3.Save<string>(str0 , spt.ESSTR001 , str3); } else if(sl_flag == "load") { spt.ESSTR001 = ES3.Load<string>(str0,str3,defaultValue:str5); } else { //エラーが出るようにする(throw等) } //ーーーー質問用タグ2ーーーー } else if(menu_num == 2)//メニュー2のデータを全部保存する { } else { //エラーが出るようにする(throw等) } } }

試したこと

ーー

補足情報(FW/ツールのバージョンなど)

unityのバージョンは2019.4.2f1です。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。