【ハルシオンUnityブログ】Enumをリスト化する
こんにちは。
大坂です。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
Enumをリスト化したかった時のお話。
EnumのリストとEnumをstringのリストに変換する方法を紹介。
デバッグ機能とかを作るときにリストにしたかったことがあったので、変換方法の紹介でした。
ではではノシ
大坂です。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
Enumをリスト化したかった時のお話。
EnumのリストとEnumをstringのリストに変換する方法を紹介。
public enum TestEnum
{
Test_1,
Test_2,
Test_3,
Test_4,
Test_5,
Test_6,
}
public void Start()
{
// enum の TestEnum をリストに変換して取得
List<TestEnum> enumList = Enum.GetValues(typeof(TestEnum)).Cast<TestEnum>().ToList();
// enum の TestEnum を string のリストに変換して取得
List<string> stringList = new List<string>(Enum.GetNames(typeof(TestEnum)));
}
デバッグ機能とかを作るときにリストにしたかったことがあったので、変換方法の紹介でした。
ではではノシ
Category: 開発日記(Unity)
【ハルシオンブログ】C#(Unity)でコードのファイル分割をする方法。OS毎にファイルを分けても同じ処理をすることができるよ
こんにちは。坂内っす。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
Unityでコードを書いているうち、1つのクラスが長くなったりした場合ファイルを分割することができます。
publicとclassの間に「partial」を書くことで行うことができます。
[PartialA.cs]
[PartialB.cs]
こんな感じで、ファイルはPartialA.csとPartialB.csの2つですが、クラスとしては、Partialというクラス1つとして使用できます。
これが普通のファイル分割の方法なんですが、プラットフォーム依存コンパイルを指定して分割も可能のようです。
[TestAndroid.cs]
[TestIOS.cs]
こうすることで、同じViewというメソッドの処理をOS毎に分けることができそうです。
(追うのが大変になるのでちゃんとコメントにこの旨を書いておくことをおすすめします)
ということで、コードのファイル分割の話でした。
あでゅ~ノシ
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
Unityでコードを書いているうち、1つのクラスが長くなったりした場合ファイルを分割することができます。
publicとclassの間に「partial」を書くことで行うことができます。
[PartialA.cs]
using UnityEngine;
public partial class Partial : MonoBehaviour
{
public void TestA() {
}
}
[PartialB.cs]
using UnityEngine;
public partial class Partial : MonoBehaviour
{
public void TestB() {
}
}
こんな感じで、ファイルはPartialA.csとPartialB.csの2つですが、クラスとしては、Partialというクラス1つとして使用できます。
これが普通のファイル分割の方法なんですが、プラットフォーム依存コンパイルを指定して分割も可能のようです。
[TestAndroid.cs]
#if UNITY_ANDROID
using UnityEngine;
public class Test : MonoBehaviour
{
public void View() {
}
}
#endif
[TestIOS.cs]
#if UNITY_IOS
using UnityEngine;
public class Test : MonoBehaviour
{
public void View() {
}
}
#endif
こうすることで、同じViewというメソッドの処理をOS毎に分けることができそうです。
(追うのが大変になるのでちゃんとコメントにこの旨を書いておくことをおすすめします)
ということで、コードのファイル分割の話でした。
あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンUnityブログ】一部海外でのfloat等小数点区切り文字が,(カンマ)で問題がでてしまう件
こんにちは。坂内っす。
ご機嫌麗しゅう?
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
Unityで扱うfloatって「0.3」とか「122.22」とかって数値が入るじゃないですか。
これ、一部の海外だと「0,3」や「122,22」ってなっちゃうの知ってます?
[Oracleの区切り文字に関するガイド]
https://docs.oracle.com/cd/E19455-01/806-2727/overview-9/index.html#:~:text=%E3%82%A4%E3%82%AE%E3%83%AA%E3%82%B9%E3%81%A8%E7%B1%B3%E5%9B%BD%E3%81%A7%E3%81%AF%E5%B0%8F%E6%95%B0,%E5%8C%BA%E5%88%87%E3%81%A3%E3%81%9F%E3%82%8A%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82
こんな感じでフランス式の国では、小数点が,(カンマ)で区切られるようです。
Unityでもこれは対応されており、以下のようなコードを端末にビルドして、端末の言語設定を変えることで確認できます。
[Blog1120.cs]
日本語設定

フランス語設定

こんな感じ。
ちゃんカンマの小数点でも計算はしてくれますので問題はありません。
しかし、こんなコードが混ざっていると問題がおきます。
こんなことをした場合、結果が変わってきます。
日本語設定

フランス語設定

フランス語のほうは以下のエラーが出てしまいます。
IndexOutOfRangeException: Index was outside the bounds of the array.
at Blog1120.Start () [0x0002b] in:0
ドットがないため、ary[0]に「0,3」が入り、ary[1]には何も入らない状況になります。
対応策としては、Splitなどを複数charで行うことでできそうです。
string[] ary = flt.ToString().Split(new char[] {'.', ','});
ということで、一部海外(フランス式)のfloatやdoubleでの小数点の区切り文字問題の対応でした。
あでゅ~ノシ
ご機嫌麗しゅう?
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
Unityで扱うfloatって「0.3」とか「122.22」とかって数値が入るじゃないですか。
これ、一部の海外だと「0,3」や「122,22」ってなっちゃうの知ってます?
[Oracleの区切り文字に関するガイド]
https://docs.oracle.com/cd/E19455-01/806-2727/overview-9/index.html#:~:text=%E3%82%A4%E3%82%AE%E3%83%AA%E3%82%B9%E3%81%A8%E7%B1%B3%E5%9B%BD%E3%81%A7%E3%81%AF%E5%B0%8F%E6%95%B0,%E5%8C%BA%E5%88%87%E3%81%A3%E3%81%9F%E3%82%8A%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82
こんな感じでフランス式の国では、小数点が,(カンマ)で区切られるようです。
Unityでもこれは対応されており、以下のようなコードを端末にビルドして、端末の言語設定を変えることで確認できます。
[Blog1120.cs]
using TMPro;
using UnityEngine;
public class Blog1120 : MonoBehaviour
{
[SerializeField] TMP_Text lbl1;
[SerializeField] TMP_Text lbl2;
void Start()
{
float flt = 0.3f;
lbl1.text = flt.ToString();
lbl2.text = (flt * 2f).ToString();
}
}
日本語設定

フランス語設定

こんな感じ。
ちゃんカンマの小数点でも計算はしてくれますので問題はありません。
しかし、こんなコードが混ざっていると問題がおきます。
using TMPro;
using UnityEngine;
public class Blog1120 : MonoBehaviour
{
[SerializeField] TMP_Text lbl1;
[SerializeField] TMP_Text lbl2;
void Start()
{
float flt = 0.3f;
lbl1.text = flt.ToString();
// 小数点のカンマ以降を取得
string[] ary = flt.ToString().Split(".");
lbl2.text = ary[1];
}
}
こんなことをした場合、結果が変わってきます。
日本語設定

フランス語設定

フランス語のほうは以下のエラーが出てしまいます。
IndexOutOfRangeException: Index was outside the bounds of the array.
at Blog1120.Start () [0x0002b] in
ドットがないため、ary[0]に「0,3」が入り、ary[1]には何も入らない状況になります。
対応策としては、Splitなどを複数charで行うことでできそうです。
string[] ary = flt.ToString().Split(new char[] {'.', ','});
ということで、一部海外(フランス式)のfloatやdoubleでの小数点の区切り文字問題の対応でした。
あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンUnityブログ】配列を特定の値で埋める
こんにちは。
大坂です。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
配列の中身を同じ値で埋めたいときはありますかね?
ループを回して入れたり初期値を書いてしまっても出来ますが、「Array.Fill」を使うと簡単にできますね。

「Array.Fill」をするとすべての要素が50になっていますね。
ちなみに「Array.Clear」もあって指定した配列を初期化してくれます。
データなどを作るとき配列に特定の値を入れたいときに便利な方法でした。
ではでは。
大坂です。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
配列の中身を同じ値で埋めたいときはありますかね?
ループを回して入れたり初期値を書いてしまっても出来ますが、「Array.Fill」を使うと簡単にできますね。
int[] testArray = new int[10];
Debug.Log(string.Join("," ,testArray));
Array.Fill(testArray, 50);
Debug.Log(string.Join("," ,testArray));

「Array.Fill」をするとすべての要素が50になっていますね。
ちなみに「Array.Clear」もあって指定した配列を初期化してくれます。
データなどを作るとき配列に特定の値を入れたいときに便利な方法でした。
ではでは。
Category: Androidアプリ紹介
【ハルシオンブログ】デジゲー2023いってきたよ!いつものごとくお邪魔したブースの写真のせるだけの回
こんにちは!坂内っす。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
11月12日はデジゲー博2023でした。
https://digigame-expo.org/
同人・インディー デジタルゲーム展示・即売会です。
今回も遊びにいってきましたよ!

案の定写真並べるだけのブログです!
【Cactus Gardernさん】
紅香さんのブース。
これもうリリースできちゃうんじゃ?できあがってますよね!

【ゾウノアシゲームズさん】
ともぞうPさんのブース。豆腐を操作するアクションゲーム!

【タツヤゲームさん】
とりあえずそのまま写真アップ!


【Mottoさん】
対戦クロスワードゲームがありました!楽しいですよね!

【椎葉さん】
なつかしのレコード盤が売ってました!

【ZephyrStudioさん】
モン娘グラディエーターと新作のホラーADVの展示でした。
キャラかわいいっすよね!

【ノナプルナインさん】
いつものようにすごい豪華なノナプルさんのブース。
グッズとかもすごくよくできてる!

【6th Sense Gamesさん】
イノウノカルテを開発している6th sense gamesさんのブース。
あと少しで完成?なのか!?
とても面白そうな作品。

【Room6さん】
Rouge with Deadでぶいぶい言わせているRoom6さんのブースですね。

めっちゃカメラ目線頂きましたが、ぼかしときますね!

【G-Modeさん】
OUや空気読みで有名なG-MODEさんのブース。
OUを全面に出してますね!

ということで、今回も元気にデジゲーいってまいりました。
来年は80人の飲み会したいですね!
では、あでゅ~ノシ
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
11月12日はデジゲー博2023でした。
https://digigame-expo.org/
同人・インディー デジタルゲーム展示・即売会です。
今回も遊びにいってきましたよ!

案の定写真並べるだけのブログです!
【Cactus Gardernさん】
紅香さんのブース。
これもうリリースできちゃうんじゃ?できあがってますよね!

【ゾウノアシゲームズさん】
ともぞうPさんのブース。豆腐を操作するアクションゲーム!

【タツヤゲームさん】
とりあえずそのまま写真アップ!


【Mottoさん】
対戦クロスワードゲームがありました!楽しいですよね!

【椎葉さん】
なつかしのレコード盤が売ってました!

【ZephyrStudioさん】
モン娘グラディエーターと新作のホラーADVの展示でした。
キャラかわいいっすよね!

【ノナプルナインさん】
いつものようにすごい豪華なノナプルさんのブース。
グッズとかもすごくよくできてる!

【6th Sense Gamesさん】
イノウノカルテを開発している6th sense gamesさんのブース。
あと少しで完成?なのか!?
とても面白そうな作品。

【Room6さん】
Rouge with Deadでぶいぶい言わせているRoom6さんのブースですね。

めっちゃカメラ目線頂きましたが、ぼかしときますね!

【G-Modeさん】
OUや空気読みで有名なG-MODEさんのブース。
OUを全面に出してますね!

ということで、今回も元気にデジゲーいってまいりました。
来年は80人の飲み会したいですね!
では、あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】Riderでフィールド名を変更すると自動でFormerlySerializedAs属性が付く
こんにちは。
大坂です。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
Riderでシリアル化されたフィールド名を変更すると自動で「FormerlySerializedAs」属性が付くんですよね。
まぁ便利といえば便利なんでしょうけど、自動で付けてほしくない人もいますかね?
設定で自動で付かないようにできるみたいなので紹介。
[設定]-[言語 & フレームワーク]-[Unity エンジン]の中にある「シリアル化されたフィールドの名前を変更する時は 'FormerlySerializedAs' を追加する」をオフにしたら付かなくなります。

自動でついた付いた「FormerlySerializedAs」属性を消したりする人は機能を切っておくといいと思います。
ではではノシ
大坂です。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
Riderでシリアル化されたフィールド名を変更すると自動で「FormerlySerializedAs」属性が付くんですよね。
まぁ便利といえば便利なんでしょうけど、自動で付けてほしくない人もいますかね?
設定で自動で付かないようにできるみたいなので紹介。
[設定]-[言語 & フレームワーク]-[Unity エンジン]の中にある「シリアル化されたフィールドの名前を変更する時は 'FormerlySerializedAs' を追加する」をオフにしたら付かなくなります。

自動でついた付いた「FormerlySerializedAs」属性を消したりする人は機能を切っておくといいと思います。
ではではノシ
Category: 開発日記(Unity)
【ハルシオンUnityブログ】MonoBehaviour.Resetってすごく便利!今まで使ってこなかったのを悔いる毎日です!
こんにちは。坂内っす。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
UnityでResetってメソッド使ってますか?
Reset
https://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.Reset.html
デフォルト値にリセットします・・・・
説明はそれだけのようです。
こんな感じでLogを出してみます。

Resetの書かれているクラスをつけたり、リセットすると走るようですね。
どんな時に使うといいのか・・・・?
Resetが書かれているコードをアサインしたときに入るので、こんな時に使うといいのかもです!

Item1と同じ構成のオブジェクトが複数ある時。
そしてこんな感じで各オブジェクトをアサインしたい場合。

一つ二つや5個くらいなら手でやってもいいんですが・・・
数十個とかあるとさすがにめんどくさいですよね!
そんな時!Resetメソッドに各アサインの処理を書いてあげると楽にアサインできるようになります。
こんな感じでアサインの処理を書いてあげます。
これでItem1などにこのコンポーネントをアサインしてあげると、勝手に各項目にアサインをしてくれるんです。

驚きの結果!すごい楽!
これで簡単に複数項目をアサインできますね!
ってことで、簡単に同じ構成のコンポーネントのアサインをする方法でした。
あでゅ~ノシ
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
UnityでResetってメソッド使ってますか?
Reset
https://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.Reset.html
デフォルト値にリセットします・・・・
説明はそれだけのようです。
private void Reset() {
Debug.Log("リセット");
}
こんな感じでLogを出してみます。

Resetの書かれているクラスをつけたり、リセットすると走るようですね。
どんな時に使うといいのか・・・・?
Resetが書かれているコードをアサインしたときに入るので、こんな時に使うといいのかもです!

Item1と同じ構成のオブジェクトが複数ある時。
そしてこんな感じで各オブジェクトをアサインしたい場合。

一つ二つや5個くらいなら手でやってもいいんですが・・・
数十個とかあるとさすがにめんどくさいですよね!
そんな時!Resetメソッドに各アサインの処理を書いてあげると楽にアサインできるようになります。
public class Blog1106 : MonoBehaviour
{
[SerializeField] Image img1, img2;
[SerializeField] TMP_Text lbl1, lbl2, lbl3;
private void Reset() {
img1 = transform.Find("img1").GetComponent<Image>();
img2 = transform.Find("img2").GetComponent<Image>();
lbl1 = transform.Find("lbl1").GetComponent<TMP_Text>();
lbl2 = transform.Find("lbl2").GetComponent<TMP_Text>();
lbl3 = transform.Find("lbl3").GetComponent<TMP_Text>();
}
}
こんな感じでアサインの処理を書いてあげます。
これでItem1などにこのコンポーネントをアサインしてあげると、勝手に各項目にアサインをしてくれるんです。

驚きの結果!すごい楽!
これで簡単に複数項目をアサインできますね!
ってことで、簡単に同じ構成のコンポーネントのアサインをする方法でした。
あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンUnityブログ】Androidのアプリをバックグラウンドに移動する
こんいちは。
大坂です。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
「Application.Quit」でアプリを終了させられますが、Androidのアプリをバックグランドに移動したい時の方法
公式マニュアルに方法があったので紹介。
https://docs.unity3d.com/2023.3/Documentation/Manual/android-quit.html
一応バックキーでバックグラウンドにするコード。
こんなことも出来るよという紹介でした。
ではではノシ
大坂です。
ポケットガール~受け継がれし希望~よろしくお願いします。
URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
URL(iOS):https://itunes.apple.com/jp/app/id1539553611
PV:
「Application.Quit」でアプリを終了させられますが、Androidのアプリをバックグランドに移動したい時の方法
公式マニュアルに方法があったので紹介。
https://docs.unity3d.com/2023.3/Documentation/Manual/android-quit.html
一応バックキーでバックグラウンドにするコード。
void Update()
{
if(Input.GetKeyDown(KeyCode.Escape))
{
AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity");
activity.Call("moveTaskToBack", true);
return;
}
}
こんなことも出来るよという紹介でした。
ではではノシ
Category: 開発日記(Unity)
| h o m e |