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

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

ただいまの
回答率

90.75%

  • C#

    6543questions

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

  • Unity

    3570questions

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

Unityでlong型をplayerprefsで保存するにはどうすればいいですか?

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 96

omochi11

score 1

Unityでlong型をplayerprefsで保存するにはどうすればいいですか?
現在お金を貯めるクリッカーゲームを作っているのですが、
intは保存できるんですが、21億らへんが限界なのでLong型にしてみたいと思ってます。
ですが、PlayerPrefs.SetLong("key",0);だとできません( ;∀;)
String float Int の三種しかないのはわかりますが、どうすればいいですか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

longをToStringで文字にして保存してはどうでしょう?
戻す時はlong.Parseで

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/10 10:24

    例えば、
    public String money;で、

    void UpdateにLong.Parse(money);にすればString型のmoneyはLong型になるんですか?

    キャンセル

  • 2018/08/10 10:33

    例えば
    long money;
    とあったときにmoneyを保存したいということですよね
    保存する時に
    string savemoney = money.ToString();
    と文字列にし、PlayerPrefsでsavemoneyを保存します。
    それで、保存したものをロードする際は
    money = long.Parse(ロードした文字列);
    とすればいいのではないかと

    キャンセル

  • 2018/08/10 11:02

    了解です!
    保存するときというのは、
    void Update() }
    string savemoney = money.ToString();
    PlayerPrefs.SetString("Money",savemoney);
    }
    こんな感じでよろしいのでしょうか?
    なぜか Input string was not in the correct formatと表示されてしまいます( ;∀;)

    キャンセル

  • 2018/08/10 11:11

    そのエラーが出るのは、ロード時でしょうか?
    もし、ロード時なのであれば、long.Parseで失敗しているということだと思いますので、TryParseで判断するなど、読み込んだ値がlongに変換できるかチェックしてください。

    キャンセル

  • 2018/08/10 11:43

    そうです!
    TryParseはどうやって使うのですか?
    質問多くてすみません!

    キャンセル

  • 2018/08/10 12:01

    できれば、ご自身で検索するなりして調べていただきたいですが、
    if(long.TryParse(ロードした文字列,out money))
    {
    // 成功
    } else {
    // 失敗
    }
    というような形になるかと

    キャンセル

  • 2018/08/10 14:20

    TryParseで確認してみたところ、long.Parseで失敗していました( ;∀;)

    キャンセル

  • 2018/08/10 14:34

    必ず失敗するのか、セーブデータがない場合のみ失敗するのかで対応が変わってくるかと思います。
    必ず失敗するのであれば、ロードした時におかしいのか、セーブした値がおかしいのかになるかと思いますので、値を確認してください。
    保存されていない時のみ起こるのであれば
    PlayerPrefs.GetString("money", "0");
    という感じで、初期値を変換できる初期値としてください。

    キャンセル

0

横から失礼します。
保存するときは前に回答してくださっている人のままですが
取り出すときは

using System;

    public long GetLong(string key)
    {
        return Convert.ToInt64(PlayerPrefs.GetString(key));
    }

    public long GetLong(string key , long init)
    {
        if (PlayerPrefs.HasKey(key))//exist
            return Convert.ToInt64(PlayerPrefs.GetString(key));
        return init;
    }

でいけると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/10 18:54

    Convertという文字が存在しないってでました( ;∀;)

    キャンセル

  • 2018/08/10 19:01

    using System;はしてありますか?

    キャンセル

  • 2018/08/10 19:08

    してませんでした!
    したらできたのですが、呼び出す場合どう入力したらよいのでしょうか?

    キャンセル

  • 2018/08/10 19:11

    この関数のまま使用する場合は
    GetLong(保存するときに使用したkey)でいけます。

    もし、この関数のまま使いたくないなら
    Convert.ToInt64(PlayerPrefs.GetString(保存するときに使用したkey));
    で問題ないと思います。

    キャンセル

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    ゲーム unityでプレイヤーのステータス実装

    unity2dでプレイヤーに攻撃力やHPや防御力等のオブジェクトをつけたいのですが、 やりかたがわかりません。コード例を教えてください

  • 解決済

    Unity 画面遷移時のデータ保存方法について

    1画面ごとにYes/Noを選択し、最終画面でYes選択項目のみ一覧表示したいと思っているのですが、PlayerPrefsでの実装方法がわかりません。 詳しい方ご教示いただけないで

  • 解決済

    Unityでのスコアについて

    スコアについて Unity上でスコア機能を実装したいのですがうまく動きません。 CS1502: The best overloaded method match for `U

  • 解決済

    [Objevice-C] NSDataの中身をint型の変数に格納したい

    BLEデバイスと連携するiOSアプリを作っています。 デバイスと接続してキャラクタリスティックを読み込みをしたところ、NSDataのdescriptionの表記通りにint型の変数

  • 解決済

    unityでのキャラクターの復活

    unityで特定のオブジェクトにプレイヤーが触れた時プレイヤーがDestroyさせ、3秒後に初期位置で復活させるといった スクリプトを書きたいのですが、キャラクターをDestro

  • 解決済

    Unity ハイスコア

    unity でランゲームを作っています。JavaScriptでやっています。 ハイスコアを保存して、表示させたいのですが、検索してもC#のものばかりでわからず困っています。 S

  • 解決済

    Vector3に色がつかない

    Vector3に色がつかなくて、再生ボタンを押すと本来する動作をしません。 using UnityEngine; using System.Collections; pub

  • 解決済

    unityで経過時間の取得、取得後に初期化、再取得したい

     前提・実現したいこと お世話になります。 unityで経過時間の取得、その後初期化して再取得したいと思っています。 開発言語はC#です。  発生している問題・エラーメッセージ

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

  • C#

    6543questions

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

  • Unity

    3570questions

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