キューバに行ってみたい

ゲーム開発とかWeb開発とか

[Rust] 文字列の最後の1文字を取り出す

Rust で文字列の最後の1文字を取り出す方法です。

pop() を使うことで簡単に取り出すことができます。
ただ pop() は Option 型が変えるので、1文字として扱いたい場合は unwrap() してあげる必要があります。 doc.rust-lang.org

コード

fn main() {
    let str = "abcdef";

    assert_eq!(str.to_string().pop().unwrap(), 'f');
}

[Rust] 特定の文字集合が含まれているか調べる

Rust である文字列に特定の文字列が含まれているか確認したいことがあったので、忘れないように実装方法を残しておきます。

contains を使うことで簡単にチェックができます。

doc.rust-lang.org

コード

fn main() {
    let str = "abcdef";
    let target = "bcd";
    let target2 = "ghi";

    assert!(str.contains(target));
    assert!(!str.contains(target2));
}

[Unity] Xcode で Archive が選択できない時の対処法 [Unity 2021.3.05.f1, Xcode 13.4.1]

この記事は以下のバージョンで動作検証を行っています。

  • Unity 2021.3.05.f1
  • Xcode 13.4.1

Unity でアプリを開発して iOS アプリの申請をする際に Xcode 上で Archive Build する必要があります。

その時 Archive がグレーアウトして選択できなくて困ったので対処法を書いておきます。

このような状態です。

対処法

Unity で build 時に Target SDK を Simulator SDK ではなく Device SDK に変更することで Archive を選択できるようになります。

些細なことですが以上になります。

[Unity] Android 端末で Admob のバナー広告のテスト広告配信が読み込まれなかった時の解決策

Unity で開発中のアプリが Android 端末で Admob のバナー広告のテスト広告配信が読み込まれませんでした。

備忘録として、その時の解決方法を書いておきます。
※実施は自己責任でお願いします。

不具合の事象は、以下の状況でした。

本番広告 テスト広告
端末A ×
端末B ×

設定は同じで端末ごとに挙動が異なることから、端末のキャッシュ周りで問題がありそうだったので、調査していたところ以下の方法で解決しました。

解決方法

端末の 設定 > アプリ > 全てのアプリを表示 > Google Play 開発者サービス > ストレージとキャッシュ > キャッシュを削除 を行うことで読み込むことができました。

どうやら Admob は Google Play 開発者サービス に統合されているらしく、その影響があるようでした。

tips ですが以上です。

[Unity] 簡単に端末にデータの保存ができる PlayerPrefs を紹介する

Version unity 2021.3.01.f1 で動作検証を行なっています。

ゲーム開発をしているとゲームスコアのようなちょっとしたデータを保存したいことがよくあります。

データの保存方法はいくつか方法がありますが、サーバーの実装が不要で簡単に端末にデータを保存できる PlayerPrefs という機能を紹介します。

docs.unity3d.com

PlayerPrefs は Key, Value でデータを保存することができます。

早速見ていきましょう。

データを保存する

データを保存するメソッドは3用意されており、それぞれ Value の型によって使い分けます。 * SetFloat() * SetInt() * SetString()

メソッド名の如く Value の型によって Float, Int, String をそれぞれ使い分けます。

PlayerPrefs.SetFloat("key_float", 1.0f);
PlayerPrefs.SetInt("key_int", 1);
PlayerPrefs.SetString("key_string", "1");

Save() というメソッドもありますが、上記メソッドで Save() まで行ってくれる為呼び出す必要はありません。

アプリ Crash 時などで保存に失敗したくない時などに使うことがあるそうです。

データを取得する

データの取得方法も保存時と同様に3つのメソッドが用意されています。

  • GetFloat()
  • GetInt()
  • GetString()

これらのメソッドを使うことで key に対応するデータを取得することができます。

float f = PlayerPrefs.GetFloat("key_float");
int i = PlayerPrefs.SetInt("key_int");
string s = PlayerPrefs.SetString("key_string");

データを削除する

データの削除は2つ方法があります。

  • DeleteKey()
  • DeleteAll()

DeleteKey() は key に対応するデータのみ削除することができます。

DeleteAll() メソッド名の如く全てのデータを削除します。

PlayerPrefs.DeleteKey("key_float");
PlayerPrefs.DeleteAll();

データの存在を確認する

  • HasKey()

HasKey() を使うことで key に対応するデータが存在していれば true 存在していなければ false を返し、存在を確認することができます。

PlayerPrefs.HasKey("key_float");

Unity Editor 上でのデータ削除方法

Unity Editor 上で保存された PlyaerPrefs を削除したいことがあるかと思うので tips として紹介しておきます。

Edit > Clear All PlayerPrefs で全ての PlayerPrefs のデータを削除することができます。