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

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

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

C#

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

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

1869閲覧

EasySave3でビルドするとセーブできない

Enoki_Nameko

総合スコア8

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

C#

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

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2020/03/10 06:48

編集2020/03/10 06:48

EasySave3を使っていて、エディタの再生ボタンを押すテストプレイモードでは普通にセーブできるのですが、ビルドすると途端にセーブができなくなってしまいます。
セーブができなくなると言うか、セーブファイルが生成されないです。
何かしらと競合しているのかとも考え、新しいプロジェクトを作ってそっちでも試してみましたが駄目でした。

解決方法を知っている方がいらっしゃったらご教授お願いしたいです。
テストプレイではセーブできるのであまり関係ないかもしれませんが、一応コードも載せておきます。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Test : MonoBehaviour { public int number = 0; public Text text; public void Save() { ES3.Save<int>("number", number); } public void Load() { number = ES3.Load<int>("number"); Draw(); } public void Generate() { number = Random.Range(0, 100); Draw(); } public void Draw() { text.text = number.ToString(); } private void Start() { Generate(); } }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izmktr

2020/03/10 07:10

とりあえず、例外を吐いているはずなので、ログファイルなどに書き出してみるといいと思います あと、ロードは失敗しますか?セーブファイルは見当たらないけどロードは成功するという状態ではないでしょうか?
Enoki_Nameko

2020/03/10 07:12

ロードもできないです。ログファイルってDebug.Logでしょうか?あれをビルドしたもので見ることってできるんでしょうか?
izmktr

2020/03/10 07:14

セーブする場所をtry~cacheで囲み、例外内容を自分でファイルに書き出す/画面に表示する感じです
Enoki_Nameko

2020/03/10 07:15

なるほど!ちょっと試してみます!
Enoki_Nameko

2020/03/10 07:59

教わったtry-catchで例外の検出を試みたのですが、種類がわからず困っています。 ``` public void Load() { try { number = ES3.Load<int>("number"); Draw(); logText.text = "成功"; } catch (DirectoryNotFoundException e) { string log = "例外が発生しました"; log += e.ToString(); logText.text = log; } catch (TimeoutException e) { string log = "例外が発生しました"; log += e.ToString(); logText.text = log; } catch (FileNotFoundException e) { string log = "例外が発生しました"; log += e.ToString(); logText.text = log; } catch (NotImplementedException e) { string log = "例外が発生しました"; log += e.ToString(); logText.text = log; } catch (ArgumentNullException e) { string log = "例外が発生しました"; log += e.ToString(); logText.text = log; } catch(ArgumentOutOfRangeException e) { string log = "例外が発生しました"; log += e.ToString(); logText.text = log; } catch(InvalidOperationException e) { string log = "例外が発生しました"; log += e.ToString(); logText.text = log; } catch(FormatException e) { string log = "例外が発生しました"; log += e.ToString(); logText.text = log; } catch { string log = "種類不明"; logText.text = log; } } ``` Loadを上記に書き換えたところ、種類不明のログが出ました。 ちなみにテストプレイモードの方で、生成したEasySave3のセーブデータを消してから再度ロードを行ったところ、FileNotFoundExceptionのエラーを検出したので、コード自体は大丈夫なのかなと思います。
izmktr

2020/03/10 08:10

Exception e としてToStringするといいです
Enoki_Nameko

2020/03/10 08:44

ありがとうございます! 試してみたところ NullReferenceException: The 'path' field of this ES3Settings is null, indicating that it was not possible to load~ というエラーが表示されました。 pathがnullだっていうことっぽいんですが、なんでビルドするとそうなってしまうんでしょうか?
izmktr

2020/03/10 09:02

EasySaveを持ってないので、そちらの仕様上の問題だとわかりません マニュアル等を読んで設定すればいいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問