Excelで汎用的に自動でJsonファイル作成※C#用追加機能あり【ExcelJsonMaker】
概要
Excelを用いてJsonファイルを作成するxlsmファイルです。
ある程度汎用化させているので自由な形で作成できると思います。
追加機能で、Jsonファイルに応じたC#用のクラスファイルも生成する機能も付けています。
JsonSerializerで扱うように作ってるので、
C#でデータを扱う際にはほぼ作業なく実装できるのではないかと思ってます。
GitHubに公開していますので自由に使ってみてください。
※ご意見、ご感想お待ちしております
Gitリンク
ExcelJsonMaker.xlsmファイルが本体です。
落としてそのまま使えるようになってます
github.com
【Unity】touchScriptを用いたスライド式ポップアップの作成
最近アプリでよく見るスライド式ポップアップを作成しました。
汎用性を持たせたので簡単に実装できるようにしてます。
デモ動画

GitのURL
使用手順
・DotWeen、TouchScriptを導入
DOTween (HOTween v2) | Animation Tools | Unity Asset Store
TouchScript | Input Management | Unity Asset Store
パッケージ内のSampleSceneを見ればアセットの内容はわかると思います。
Inspectorの設定を画像で説明します。


【Unity】Building native binary with IL2CPP…で止まるときの対処法
最近、IL2CPPでビルドした時に上手くいかないことがあり
対処法を色々試したので解決したものを紹介します。
問題
・ビルドを行ったら、必ず「Building native binary with IL2CPP…」で固まる

・Cancelしても固まったまま
・IL2CPPからMonoに切り替えるとビルドは成功する
・再起動、Liblary初期化等の対応を行っても直らない
・何度か試しているとビルドに成功する
解決方法
ウイルス対策ソフトを停止させた。
私はスーパーセキュリティというソフトを入れていたのですが、
そいつのせいでビルドが固まっているようでした。。。

画像のように保護の項目を全てOFFにして再起動後にビルドすると上手くビルドできました。
皆さんも、同じことがあった場合はウイルスソフトを疑ってみてください。
【Unity】GamePackageRegistrybyGoogleがImport出来ないときの対処法
Google Play In-app Reviewを実装しようとしたときにうまく動かなかったので対処法を記事にします。
※環境が同じ人は試してみてください
環境
・Unity:2020.3.17f1
・GooglePlayPlugins:v1.5.0
問題
ScopedRegistryにGoogleのRegistryを登録する工程でつまずく
※以下、作業工程と現象
PackageManagerに以下のRegistryを登録
Name : Game Package Registry by Google URL: https://unityregistry-pa.googleapis.com Scope : com.google
登録後、再起動しても何をしても
PackageManagerにGoogle LLCが表示されない
※Unityの過去バージョン(2019.4.26)だと表示されるので手順に問題はなさそう
対応
以下リンクで必要なパッケージがDLできるので、直接DLしてImportした
github.com
色んな項目に応じてUnityPackageが置かれてあるので
必要なものをDLしてください。
以上、PackageManagerを使わずにライブラリの追加を行う方法でした。
【Unity】ボタン表示切り替え用拡張スクリプト
Unityでボタンを実装する時、表示切り替えの実装が面倒くさくなったので
汎用処理をまとめたスクリプトを作成しました。
ソース
ボタンのinteractableの切り替えを監視して、
画像、文字の表示を切り替える拡張機能になります。
github.com
using System.Collections; using System.Collections.Generic; using System.Linq; using TMPro; using UniRx; using UnityEngine; using UnityEngine.UI; public class ButtonInteractiveDisp : MonoBehaviour { //Button内オブジェクト [SerializeField] protected Button btnSet = null; [SerializeField] Image imgSet = null; [SerializeField] TextMeshProUGUI txtSet = null; //定数:ボタン背景画像 ※画像はInspectorで設定 [SerializeField] Sprite sprBackOn = default; [SerializeField] Sprite sprBackOff = default; //定数:ボタンテキスト色 Color clrTextOn = new Color32(0, 0, 0, 255); Color clrTextOff = new Color32(255, 255, 255, 255); /// <summary> /// オブジェクト内のButtonコンポーネントを検索して設定 /// </summary> protected void FindTransform() => btnSet = btnSet == null ? GetComponent<Button>() : btnSet; /// <summary> /// ResetイベントはInspectorの設定からも発行できる /// </summary> private void Reset() { FindTransform(); InitDisp(); } /// <summary> /// 起動時に表示の初期化とイベント設定を行う /// </summary> void Start() { InitDisp(); //ボタンのinteractableプロパティの切り替わりイベント設定 btnSet.ObserveEveryValueChanged(btn => btn.interactable) .Subscribe(isOn => { UpdateDisp(isOn); }) .AddTo(this); } /// <summary> /// ボタン表示初期化処理 /// </summary> private void InitDisp() { //Buttonコンポーネント取得済み判定 if (btnSet == null) { return; } //ボタン内にImage,Textがあればコンポーネント取得 imgSet = (Image)btnSet.targetGraphic; txtSet = GetComponentInChildren<TextMeshProUGUI>(); //ボタンの各状態での色をすべて白に設定する Color defColor = new Color32(255, 255, 255, 255); ColorBlock cb = btnSet.colors; cb.selectedColor = defColor; cb.highlightedColor = defColor; cb.disabledColor = defColor; cb.selectedColor = defColor; cb.pressedColor = defColor; btnSet.colors = cb; //現在のinteractableに合わせて表示設定 UpdateDisp(btnSet.interactable); } /// <summary> /// ボタン表示更新 /// </summary> /// <param name="isOn">interactable設定</param> private void UpdateDisp(bool isOn) { Sprite sprBack; Color clrText; string textValue = ""; //背景内容取得 if (isOn) { sprBack = sprBackOn; clrText=clrTextOn; textValue = "ボタン:有効"; } else { sprBack = sprBackOff; clrText = clrTextOff; textValue = "ボタン:無効"; } //背景変更 if (imgSet != null) { imgSet.sprite = sprBack; } //文字変更 if (txtSet != null) { txtSet.color = clrText; txtSet.text = textValue; } } }
プライバシーポリシー シンプルGPS記録2021
プライバシーポリシー 2021/08/27
本アプリ「シンプルGPS記録2021」は、個人情報保護の重要性を認識し、以下の方針に則り適切な個人情報の保護に努めます。
(定義)
このプライバシーポリシー(以下、本プライバシーポリシーといいます)は、私が提供する位置記録アプリ「シンプルGPS記録2021」(以下、本アプリケーションといいます)における利用者情報の取り扱いを定めたものです。
(取得される情報の項目、取得方法、利用目的)
私は、本アプリケーションのご利用に際して、次の利用目的の達成に必要な範囲で下記に記載する利用者情報をアプリケーション経由で自動的に取得し、取り扱います。
ご利用端末のGPS機能及びその他の位置情報測位機能を利用した位置情報及びその取得時刻、その状態
取得方法:アプリケーションによる自動取得
利用目的:本アプリケーション内で地図上に表示する為。 ご利用者様が識別されない形式での位置情報統計データ活用の為
(情報収集モジュール)
当社で配信するアプリでは、広告配信を目的として以下の広告配信事業者がご利用者の情報を自動取得する場合がございます。この情報から個人が特定されることはありません。取得する情報、利用目的、第三者への提供等につきましては、以下の広告配信事業者のアプリケーション・プライバシーポリシーのリンクよりご確認ください。
AdMob(Google Inc.)
https://policies.google.com/technologies/ads
(同意)
本アプリケーションは、本プライバシーポリシーをご確認頂き、内容を理解した上でご利用ください。ご利用者様は、本アプリケーションをインストールする際に、本プライバシーポリシーをご確認ください。
(利用の終了)
本アプリケーションの利用を終了し、利用者情報の送信を停止したい場合には、本アプリケーションをアンインストールしてください。
(本プライバシーポリシーの変更)
私は、法令の変更等に伴い、本プライバシーポリシーを変更することがあります。
私は、本アプリ-ケーションのバージョンアップに伴って、利用者情報の取得項目の変更や追加、利用目的の変更、第三者提供等について変更がある場合には、ダウンロード前に通知し、重要なものについては、インストール前もしくはインストール時にあらためて同意を取得させて頂きます。
(利用者情報の取り扱いに関する問い合わせ窓口)
本サービス及び本アプリケーションにおける私が取得する情報の取り扱いに関して、ご意見・ご要望がございましたら、下記までご連絡くださいますようお願いします。
Mail:apuridasuo1192@gmail.com
【Unity】IOS14.6からmailtoで改行コードが使えなくなった対策
Unityでメーラー機能を実装するとき、mailtoを使っていた人に悲報です。
IOS14.6以降、mailtoで改行コードが認識されない仕様になりました。
改行コード'%0D%0A'を使用すると、改行されない上に<BR>が表示されてしまいます。
developer.apple.com
詳細は上記サイトに載っていますが、
とのことです。。。改行すらサポートしないのは致命的すぎませんか?
と思っちゃうのは私がハッカーに悩まされたことがないからでしょうか。。。
ということで今回はmailtoを利用していたメーラー機能に
IOSのみ別のやり方で、改行のサポートを行う実装方法を紹介します。
作成したアセット公開
github.com
アセットの内容は上記URLで公開しています。
ソースファイルと説明を一緒に見ていただけるとわかりやすいと思います。
ソース紹介【IOSプラグイン】
mailtoに変わるメーラー機能を利用します。
MessageUIフレームワークのMFMailComposeViewControllerを利用することで、
アプリケーション内でメールの作成や送信ができます。
IOS専用のプラグインになるのでObject-C形式で呼び出します。
▼MailerPlugin.mm
#import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h> @interface SocialWorker : NSObject<UIDocumentInteractionControllerDelegate, MFMailComposeViewControllerDelegate> @property(nonatomic, retain) UIDocumentInteractionController *_dic; @end @implementation SocialWorker /** * メール投稿 * @param to 宛先 * @param subject タイトル * @param message メッセージ */ - (void)postMail:(NSString *)to subject:(NSString *)subject message:(NSString *)message { if([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init]; vc.mailComposeDelegate = self; [vc setToRecipients:[to componentsSeparatedByString:@","]]; [vc setSubject:subject]; [vc setMessageBody:message isHTML:NO]; [UnityGetGLViewController() presentViewController:vc animated:YES completion:nil]; } else { } } /** * メール結果 */ - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { [UnityGetGLViewController() dismissViewControllerAnimated:YES completion:nil]; } @end /** * Unityから呼び出されるネイティブコード */ extern "C" { static SocialWorker *worker =[[SocialWorker alloc] init]; UIViewController *UnityGetGLViewController(); void UnitySendMessage(const char *, const char *, const char *); static NSString *getStr(char *str){ if (str) { return [NSString stringWithCString: str encoding:NSUTF8StringEncoding]; } else { return [NSString stringWithUTF8String: ""]; } } void postMail(char *to, char *subject, char *message){ [worker postMail:getStr(to) subject:getStr(subject) message:getStr(message)]; } }
ソース紹介【Unity呼び出し】
上記で作成したプラグインをC#で呼び出します。
▼OpenMailer.cs
public class OpenMailer { /// <summary> /// ネイティブプラグイン定義 /// </summary> #if UNITY_IPHONE [DllImport("__Internal")] private static extern void postMail(string to, string subject, string message); #endif public void OpenMailerBase(string Address,string Kenmei, string Message) { #if UNITY_IOS postMail(Address, Kenmei, Message); #else string kenmeiOff = System.Uri.EscapeDataString(Kenmei); string messageOff = System.Uri.EscapeDataString(Message); string Url = $"mailto:{Address}?subject={kenmeiOff}&body={messageOff}"; Application.OpenURL(Url); #endif } }
IOSのみ、プラグインを呼び出します。
他のプラットフォームはmailto機能できちんと改行されますので大丈夫です。
あとは宛先等の情報を引数にOpenMailerBaseを呼び出せばOKです。
※以下、呼び出す関数のサンプルコード
void MakeMailer() { string to = "testAddressTo@gmail.com"; string kenmei = "件名:テスト"; string message = "▼本文\r\n" + "----------------------------\r\n" + "\r\n\r\n" + "----------------------------"; OpenMailer mailCls = new OpenMailer(); mailCls.OpenMailerBase(to, kenmei, message); }
参考サイト
SocialWorkerのプラグインはメール機能だけでなく、
TwitterやFaseBook連携も行っているようですので多機能でおすすめです!
github.com