Macで昔のCD(hfs)を読む

昔購入したこちらのCDを、Mac OS Big Sur にて読み込もうとしたら、詰まったので備忘録。

背景カタログCD-ROM1住宅路上編 単行本(ソフトカバー) – 2006/6/20

これをMacで読もうとすると、読み込めなくて積む。原因はCD自体が過去の規格(hts)で作られているためである。回避するにはwindowsで読み込むとかあるけど、Macしかないときは困る。

以下の記事を参考に、ディスクユーティリティを開き、非活性化している(マウントされてない)CD-ROMを右クリックでひらき、ディスクイメージ(dmgファイル)を作成して、dmgファイルを読み込む方法がある。

https://books.mdn.co.jp/faq/measures-for-mac/

ただ、ディスクイメージを作成しようとしたとき、「許可されてない」的なエラーがでることがある。ここで詰まったのだ。

正解は、「セキュリティとプライバシー」に、「ディスクユーティリティ」を追加することでディスクイメージが作成されるようになる。

無事に、dmgファイルが作成される。あとはこれをクリックすればよめる。

さて、作成したdmgファイルを開こうとすると以下のエラーがでた。

「マウントできるファイルシステムがありません」ということで、ここでまた詰んでしまう。ちっ たくよぉ、、、。

Parallels Desktopをたちあげ、DMG Extractorソフトを入れて読んでみたが1ファイルしか表示されないようだった。

うーん。

古いwindowsを引っ張り出して読み込みました。

くそおおおおおおおおおお。

カテゴリー: Mac

メールエンティティでの本文の取付方

以下のようにメール本文をHTMLに直書きするとロボット(クローラー)が自動的にメールアドレスを取得して広告メールなんかが爆裂に飛んできてしまう。

<a href="mailto:abc@abc.com">Mail</a>

そこで、以下のようなサイト

https://www.luft.co.jp/cgi/coding.php

を利用してメールエンティティ化する。こうするとメールアドレスが直接HTMLにかかれていないため、拾われることがない。

<script type="text/javascript">
<!--
function converter(M){
var str="", str_as="";
for(var i=0;i<M.length;i++){
str_as = M.charCodeAt(i);
str += String.fromCharCode(str_as + 1);
}
return str;
}
function mail_to(k_1,k_2)
{eval(String.fromCharCode(108,111,99,97,116,105,111,110,46,104,114,101,102,32,
61,32,39,109,97,105,108,116,111,58) 
+ escape(k_1) + 
converter(String.fromCharCode(96,97,98,63,102,108,96,104,107,45,98,110,108,
62,114,116,97,105,100,98,115,60)) 
+ escape(k_2) + "'");} 
document.write('<a href=JavaScript:mail_to("","")>(必ずお問い合わせなどの文字を入力してください)<\/a>');
//-->
</script>
<noscript>(画像などを設置)</noscript>

このメールエンティティ化したリンクをクリックしたとき、メールタイトルやメール本文などをどうするか?というと、こうする

<script type="text/javascript">
<!--
function converter(M){
var str="", str_as="";
for(var i=0;i<M.length;i++){
str_as = M.charCodeAt(i);
str += String.fromCharCode(str_as + 1);
}
return str;
}
function mail_to(k_1,k_2)
{eval(String.fromCharCode(108,111,99,97,116,105,111,110,46,104,114,101,102,32,
61,32,39,109,97,105,108,116,111,58) 
+ escape(k_1) + 
converter(String.fromCharCode(117,104,107,107,96,102,100,111,113,110,108,63,102,108,96,104,107,45,98,110,108,
62,114,116,97,105,100,98,115,60)) 
+ escape(k_2) + "メールタイトル&body=下記項目を入力してください%0D%0A%0D%0A名前→%0D%0A年齢→%0D%0A住所→%0D%0A電話番号→%0D%0A身長→%0D%0A体重→%0D%0A%0D%0A本文本文本文本文本文本文%0D%0A'");} 
document.write('<a href=JavaScript:mail_to("","") class="btn btn-primary btn-block btn-entry">メール送信する<\/a>');
//-->
</script>
<a href="JavaScript:mail_to(&quot;&quot;,&quot;&quot;)" class="btn btn-primary btn-block btn-entry">メール送信する</a>

body内にある

%0D%0A

は改行できる。メールリンクはスマホからだと送信する方も、受信して返信する方も、楽である。サーバー上にプログラムを置く必要もない。

Mac mini のMagic Mouse 2、Magic Trackpad 2の動きがおかしい、もたつく

あちこちでいわれている事であるが、Mac miniのBluetooth接続の周辺機器がおかしいというやつである。マウスとかが動きがもたついたり、スクロールがうまくいかなかったりする。これが時折発生するのでイライラしてた。

Mac miniのwifiを切ってはいたけれど、もたつきはかなり発生していたので諦めかけていたんだけど、解決策をみつけて試してみたら直ったようなので、ここに記す。

購入したMac mini は以下。
3.2GHz 6コア第8世代Intel Core i7(Turbo Boost使用時最大4.6GHz)
メモリは64GB、ストレージは1TB。

解決方法(自分の場合)無線LANの2.4GHzを全部切る、OFFにする。

これで、解決した。今は快適。2.4GHz帯はBluetoothと使用帯域が重複するから、が原因。BluetoothのほうがWi-Fiに比べ送信出力が約10分の1と小さく、干渉が起こるとBluetoothのほうが不利なのが原因らしい。

2.4GHz帯は周波数が低く、電波が遠方まで届きやすい点がメリット。
5GHz帯のメリットは、Wi-Fi専用の電波である事。ただ、壁などの障害物があると弱まりやすいらしい。

自宅内で使用するwifiは5Ghz統一でいいのかもね。

MainCameraとCanvas、Panelを組み合わせていい感じのスマホ用設定(自分用)

Canvasは常に画面に映るようにしてくれる「俺をつねに見とけ」的な強気なオブジェクトです。これにボタンとか入れることで、カメラワークとは関係なく常に画面の定位置に居続けてくれます。

そんな自分のCanvas設定がこちらです。

ただ、これはカメラとか関係ない状態なんでね。簡単な2Dアプリケーションとかつくるときはいいんですけどね。パーティクルやらスプライトやらを使うときは困るわけです。そこで以下の設定。

位置のZはわかりやすく0にして、あとはこんな感じに。

そして、前回の設定をやったあとに、

レンダーモードとレンダーカメラをこうしておく。

するとカメラの中にCanvasが収まってくれる。(カメラが真ん中に見えるよね)

これで、2D、3Dゲームと同じようにスプライトや、パーティクルなんかを置くことが可能になる。

ちなみに、Canvasのレンダーモードを「スクリーンスペース・カメラ」にすると、Canvasは常にカメラから100離れた位置に居続ける。カメラをどれだけ移動しようと常にきっかり100離れた場所に居続けるようだ。

Canvasだけをつかったアプリも最近はよく見かける。お手軽だし。でもカメラまできちんと考えて設置しておいたほうがアニメーションもいい感じになるし、こちらがいいとおもう。

Karabiner-Elementsをつかってキーボードマッピングした

えーとね、Macの純正のキーボードはかっこいいんだけどね、まー 実際使いにくいのよね。俺のマストキーボードはマイクロソフトのMicrosoft Natural Ergonomic Keyboard 4000なの。でも今は販売中止になってしまって。また再販してほしいのになぁ。

さて、Macの純正キーボードは使いにくいというか、俺がwindowsとmacを両方使っているのが原因だから。これを一本化してみようとおもう。

macにいれたソフトは以下のもの。

https://karabiner-elements.pqrs.org/

これを使ってキーボードを設定します。参考にしたサイトは以下。

https://colo-ri.jp/develop/2019/01/macos-ej-ime.html

https://creative89.com/2017/05/27/how-to-use-windows-keyboard-on-mac/

これを参考に以下のように設定をした

よし、これでキーボード切替機をいれれば問題ないな

2021/03/12追記
さらにキーボードマッピングを修正。だんだん完璧になっていくな。

さらに以下を購入して、きりかえもばっちりんこ

USB 切替器、ABLEWE USB3.0 切り替え 5Gbps高速転送 PC2台用 4USBポート プリンタ マウス キーボード ハブなどを切替 手動切替器 USBケーブル×2 (1.0m)付き

https://www.amazon.co.jp/gp/product/B0859YCPWV

2021/03/13、キーボードマッピングを変更した

BacklogとMacのSourcetreeをリモートしたときのエラーでつまる

新しいMacを仕入れて、「さーて、Sourcetreeの設定でもするかな?」と思い、設定を始めたところつまってしまった。経緯は以下

  • Backlogで設定したhttpsのgitアドレスを入力

そしたら、ユーザーIDとパスワードを聞いてくるため 入力する。ここで間違い発生。Backlogは2段階認証を設定しているとパスワードがアカウントログインのものとは違っているのだ。うっかりしていた。

入力をミスるとmacの場合、キーチェーンに記録さてしまい、次回以降SourceTreeはそれを参照するようになる。つまり間違い続けるログインをやりつづけるため、2度とBacklogにgitアクセスできないということになる。

これSoucretreeのバグじゃねーの?とおもったが、我慢して対処方法を探すことにした。

まずキーチェーンからsourcetreeのところを削除する。しかし、それでもだめで再度ユーザーとパスワードを聞いてこない。

次に以下の場所にジャンプ

~/Library/Application Support/Sourcetree

ここには、Sourcetreeのアプリケーションのセーブデータが入っている。まるごと削除する。どうせ、最初からの設定だしどうでもいい。もしSourcetreeをバリバリ使用途中だったらこれをやるとさすがにまずかろう。

ここまでやってアプリケーションを再起動したらうまくいった。いえーい。

バックログの2段階認証はめんどくさいなぁ。

Unity+NCMBでiOSビルドしたときのどえりゃあエラー

Unityでビルドして、xcodeにいき、そこでビルドしたときに出るなんだかよくわからんエラー。ぞろぞろ出てくるもんだから とっても怖い。

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_UNUserNotificationCenter", referenced from:
      objc-class-ref in NCMBAppControllerPushAdditions.o
  "_OBJC_CLASS_$_ASAuthorizationController", referenced from:
      objc-class-ref in NCMBAppleAuth.o
  "_OBJC_CLASS_$_ASAuthorizationAppleIDProvider", referenced from:
      objc-class-ref in NCMBAppleAuth.o
  "_ASAuthorizationScopeEmail", referenced from:
      -[NCMBAppleAuth loginWithAppleId:] in NCMBAppleAuth.o
  "_ASAuthorizationScopeFullName", referenced from:
      -[NCMBAppleAuth loginWithAppleId:] in NCMBAppleAuth.o
  "_OBJC_CLASS_$_WKWebView", referenced from:
      objc-class-ref in NCMBRichPushView.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

UnityFrameworkが不足しているだけである。

あわてず、+ をクリックし以下を追加する
WebKit.framework
UserNotifications.framework
AuthenticationServices.framework
そこまでやって、再度ビルドしよう。いちおうxcodeもクリーンして、再起動かましとこう。

Unityとニフクラ mobile backendでプッシュ通知の設定するまで、iOS編

特に迷わなかった。証明書.p12を書き出すときに間違ってパスワードを設定したくらいである。
ニフクラのドキュメントにきれいに書いてある。

念の為、ざっくりと手順だけかいておく。

1)Appleデベロッパーにアクセスして準備

https://developer.apple.com/にて
・「バンドル識別子」を使用します。
・証明書はめんどくさいので、本番用をいきなり作りました
・こちらにきれいに書いてある。

mBaaSとAPNsの連携に必要な設定
https://mbaas.nifcloud.com/doc/current/tutorial/push_setup_ios.html#gsc.tab=0

証明書を.p12形式に変換するとき、パスワードを設定しちゃいかんぞ

プッシュ通知の設定はiOSの方が簡単じゃのお

Unityとニフクラ mobile backendでプッシュ通知の設定するまで、Android編

ほんとさあ、プッシュ通知まじでめんどくさい。何がめんどくさいって最初がめんどくさい。ほんとめんどくさい。最初はFirebaseだけでやろうと思ったんだけど、どーもUnityでのビルドでひっかかってしまう。何が悪いかわからない。

そういうわけで、我らがニフクラでプッシュ通知を実装したので、以下手順を書く。Unity + ニフクラ + Firebaseということになる。挫折したひと、いると思うのよね。

つかうもの
1)Unity(プロジェクトつくっておく)
2)Firebaseを使う
3)ニフクラを使う

1)Unityでプロジェクト作る
 まず、Unityで適当なプロジェクトを作る。別になんでもよい。プロジェクトを作成したらビルド設定をひらき、プレイヤー設定をクリックして

バンドル識別子を設定しておく。

2)Firebaseの設定を行う
 プロジェクトを追加にて新しくプロジェクト追加する。

Unity アプリに Firebase を追加 にて、バンドル識別子を入力。iOS app にもプッシュ通知したいのでここにもバンドル識別子をいれる。もちろんAndroid appにもいれる。アプリのニックネームは適当に。

秘密鍵のダウンロードをする

google-services.json をダウンロードしておく(Android用)

GoogleService-Info.plist をダウンロードしておく(iOS用)

ここまでで、Firebaseの設定は終わります

3)ニフクラの設定
 プッシュ通知設定ファイルの選択 をクリックして、firebase上でダウンロードした秘密鍵をアップする

4)Unityの設定
 基本的にはニフクラのドキュメントに沿って行えば良い。以下、簡単に書いておく。

 1.NCMBのSDKをインポート。
 2.Prefabsフォルダ内の「NCMBManager」「NCMBSettings」をドラッグしてシーン直下へ。
 3.NCMBSettingsのUse Pushにチェックをいれる。
 4.google-services.jsonを配置する。(google-services.jsonは、プロジェクト内のAssets/Plugin/Android直下に配置。)
 5.アプリケーションキーとクライアントキーを入力。(アプリケーションキーとクライアントキーはニフクラからコピペ。)

5)ここまででいったん、ビルドしてAndroid端末にいれてみよう
 もしビルドエラーが出た場合、Unityを再起動する。どういう理屈なのかはわからないが、なんらかのSDKをインポートしたとき、ビルドでめっちゃエラーがでてくるときがある。

6)プッシュ通知をするためのコードを書く。
 PushObjectをいうゲームオブジェクトを作成し、PushObjectソースコードファイルをアタッチ。

コードは以下。
using UnityEngine;
using System.Collections;

/////////////////////////ここから追加コード////////////////////////
//SDKの利用を宣言
using NCMB;
/////////////////////////ここまで追加コード////////////////////////

using System.Collections.Generic;

public class PushObject : MonoBehaviour {

/////////////////////////ここから追加コード////////////////////////
    private static bool _isInitialized = false;

    /// <summary>
    ///イベントリスナーの登録
    /// </summary>
    void OnEnable()
    {
        NCMBManager.onRegistration += OnRegistration;
        NCMBManager.onNotificationReceived += OnNotificationReceived;
    }

    /// <summary>
    ///イベントリスナーの削除
    /// </summary>
    void OnDisable ()
    {
        NCMBManager.onRegistration -= OnRegistration;
        NCMBManager.onNotificationReceived -= OnNotificationReceived;
    }

    /// <summary>
    ///端末登録後のイベント
    /// </summary>
    void OnRegistration (string errorMessage)
    {
        if (errorMessage == null) {
            Debug.Log ("OnRegistrationSucceeded");
        } else {
            Debug.Log ("OnRegistrationFailed:" + errorMessage);
        }
    }

    /// <summary>
    ///メッセージ受信後のイベント
    /// </summary>
    void OnNotificationReceived(NCMBPushPayload payload)
    {
        Debug.Log("OnNotificationReceived");
    }

    /// <summary>
    ///シーンを跨いでGameObjectを利用する設定
    /// </summary>
    public virtual void Awake ()
    {
        if (!_isInitialized) {
            _isInitialized = true;
            DontDestroyOnLoad (this.gameObject);
        } else {
            Destroy (this.gameObject);
        }
    }


/////////////////////////ここまで追加コード////////////////////////

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

}

「Awake」内の処理、これを書くことでPushObjectが別のシーンに入っても生き続けることができる。OnEnable内の処理で端末をニフクラに登録することが可能となる。

 Unityをビルドし、端末で実行してみる。

 ニフクラのサーバー内にプッシュ通知をおくるべき端末が記録されていることを確認できる。

 あとは、ニフクラのプッシュ通知を使用してプッシュ通知をおくることが可能になる。

FireBaseでのエラー

原因不明だったのだが、なぜか治ってしまった。備忘録として書いておきたい。

経緯/
 Firebaseの公式サイトからSDKをダウンロードし、解凍してインポートした。目的はプッシュ通知である。ドキュメントのとおりに行う。
 しかし、ビルドエラーが乱立してしまった。キャプチャーを撮っていなかったが、JDK周りのエラーのようだった。Firebaseをインポートする前は普通にビルドできていたため、インポートしたファイルの何かが悪いというのはわかるのであるが、原因が探せなかった。

解決方法/
 Firebaseのドキュメントの中に、

iOS の場合 – [GoogleService-Info.plist をダウンロード]
Android の場合 – [google-services.json をダウンロード]

というのが存在した。この2つのファイル「GoogleService-Info.plist」「google-services.json」をUnityのAsset直下においておけ、とドキュメントに書いてある。自分はそのとおりにした。

 結論から言うと、この2つのファイル「GoogleService-Info.plist」「google-services.json」をAssetから外すことでビルドが通ってしまった。なぜかはわからない。

 再度2つのファイルをAsset直下にいれたら今度はビルドが通った。

 なぜかはわからない。誰かおしえてくれろ。

Unity DOTweenのプログラム例

以下に、DOTweenを使用したソースコード例をおいておく。シーケンス準備からコールバック、移動、などまで一通りまとめた。これで大体は事足りるだろう。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;

//トップページのロゴをびょーんとしたあとに無限にふわふわ動かす
public class TopRogoMove : MonoBehaviour
{

    //RectTransform指定。Getconponentは遅いんで極力つかわんことにする
    public RectTransform titleRogo;

    //アニメーションシーン
    private Sequence _myseq;
    private Sequence _myseq2;

    void Start()
    {

        //アニメーション、シーケンス準備
        _myseq = DOTween.Sequence();

        _myseq.AppendInterval(
            1.0f                            //待ち
        );

        //びよーん
        _myseq.Append(
            titleRogo.DOPunchScale(
                new Vector2(1.2f, 1.2f),    //scale1.5倍指定
                1.0f                        //アニメーション時間
            )
        );

        //数秒まつ
        _myseq.AppendInterval(
            1.0f                            //待ち
        ).AppendCallback(() => {            //コールバック設定、これをいれることで終わったあとに更に処理ができる

            //アニメーション、シーケンス準備、2つ目
            _myseq2 = DOTween.Sequence();

            //ふわふわ(ループ)
            _myseq2.Append(
                titleRogo.DOLocalMove(          //ローカル座標
                    new Vector2(0.0f, 150.0f),  //移動XY
                    2.0f                        //アニメーション時間
                )
                .SetEase(Ease.InOutBack)        //イージング指定
                .SetRelative()                  //いまいる場所から移動
            );

            _myseq2.AppendInterval(
                0.4f                            //待ち
            );

            _myseq2.Append(
                titleRogo.DOLocalMove(          //ローカル座標
                    new Vector2(0.0f, -150.0f), //移動XY
                    2.0f                        //アニメーション時間
                )
                .SetEase(Ease.InOutBack)        //イージング指定
                .SetRelative()                  //いまいる場所から移動
            );

            _myseq2.SetLoops(-1);               //-1は無限ループ

            //再生
            _myseq2.Play();

        });

        //再生
        _myseq.Play();

    }

    private void OnDisable()
    {
        //オブジェクトが破棄されるタイミングでTweenアニメーションもkillしておく
        if (DOTween.instance != null)
        {
            _myseq.Kill();
            _myseq2.Kill();
        }
    }

}

イージングの種類はこちらをよく参考にさせてもらっています。

リンク集

最近さがしたり、参考にしたサイトをまとめてリンクしておく。

Modern UI Pack
https://assetstore.unity.com/packages/tools/gui/modern-ui-pack-150824

Pro Cartoon UI Pack
https://assetstore.unity.com/packages/2d/gui/icons/pro-cartoon-ui-pack-129756

Airy UI – Easy UI Animation
https://assetstore.unity.com/packages/tools/gui/airy-ui-easy-ui-animation-135898

Youtube動画からサムネイル画像を取得する方法
https://www.billionwallet.com/goods/youtube_image.html

firebase確認
https://apps-gcp.com/firebase-authentication/
https://firebase.google.com/docs/auth/unity/twitter-login?hl=ja

UnityのUpdate()をマネージャで管理`
https://www.weed.nagoya/entry/2017/09/20/135611

Crowi
国産のWikiソフトで、もともとは社内用に開発したWikiをオープンソース化した物
https://qiita.com/Bakudankun/items/740ac8ba1395fe4e40a6

無限スクロール
http://kohki.hatenablog.jp/entry/Unity-uGUI-Fixed-Scroll-Rect
http://www.asset-sale.net/entry/EnhancedScroller_1

スクロールアセット
https://qiita.com/ayumegu/items/556d0385bbd4e00b89f5

Unity Apple
https://gurutaka-log.com/unity-ios-release
http://bob-jpn-heuer0925.hatenablog.com/entry/2017/09/09/035351

Unity Android署名
https://ideacloud.tokyo/develop-days/development/apk_rerease_setting.html

備忘録 Unity アプリからURLを開く
https://ameblo.jp/10soba/entry-12445527586.html

アプリのバックグラウンド移動と終了の検知
起動時に電源をOFFにし、いったんバックグラウンドにいったときの処理
http://greenkour.hateblo.jp/entry/2018/08/20/070000
https://qiita.com/wapa5pow/items/2cbad14267d2ad3433f5

誰でも簡単に使える最強のAudio(BGM, SE)Manager【Unity】
https://kan-kikuchi.hatenablog.com/entry/AudioManager_2019

Unity で自動でスリープに入らないようにする設定
https://loumo.jp/wp/archive/20140205000312/
https://www.urablog.xyz/entry/2017/06/11/230753

ソーシャルログイン’ を90秒で導入する方法 / OAuth認証
https://qiita.com/RingCaptcha/items/60db56ed24567718fe80

Twitterを使った認証機能
https://blog.mbaas.nifcloud.com/entry/8046

windows10マシンのCドライブが容量いっぱいになった時の苦肉の策

今日のメモは自己責任度合いが高いため、注意すること。

windows10マシンを長年使用していると、どうにこうにも容量がいっぱいになってくることがある。一番ベストな方法は、OS自体を再インストールすることだが、時間もかかるし、環境によってはできないこともある。

ゴミ箱を空にする、クリーンアップをする、などいろいろあるが、今日ここでメモしておくのはwindowsフォルダ内にある Installer フォルダを別ドライブに変えてしまう方法だ。

Instrallerフォルダはインストールファイルが日々溜まっていく。消えることはないため、貯まる一方である。自分のマシンは40GBほどあった。これを移動できれば、かなり容量が稼げる。

しかし、windowsフォルダ内のものは、システムに関わってくるため、下手に消してしまうと動かなくなってしまう場合があるため、簡単に移動はできない。そこで シンボリックリンク を使うことにする。

条件として「Dドライブなどの大容量の別ドライブが内蔵されていること」が必須。

後述する手順によって
C:\Windows\Installer
  ↓
D:\Windows_SymbolicLink\Installer

にて使用するようにシンボリックリンクをはる。

【シンボリックリンクを利用してCドライブの空き容量を増やす】

以下の作業は全て管理者アカウントで行う。

前準備)
「エクスプローラー」→「表示」にて「保護されたオペレーティングシステムファイルを表示しない(推奨)」のチェックを外しておく。

(1)Dドライブに以下のフォルダを作成する
D:\Windows_SymbolicLink\Installer

(2)C:\Windows\Installerのフォルダの中身をまるごと(1)で作成したフォルダにコピー(20分くらいかかります)

(3)C:\Windows\InstallerのInstallerの名前を「Installer_bk」と変更しておく。(何かあった時のための保険として)

(4)管理者権限でコマンドプロンプトを実行。C:\Windowsに移動する。
CD C:\Windows

(5)以下のコマンドにてシンボリックリンクを作成。
mklink /D Installer D:\Windows_SymbolicLink\Installer

(6)再起動、通常のアカウントでログイン。

※問題なければ、ちゃんと起動します。今後Installerは、Dドライブの方に記録されていきます。「うまく動いてるなー」と思ったら頃合いをみてCドライブの「Installer_bk」は削除。(Cドライブの容量は40GBは空くと思われます。)

懸念点)
システムファイルにシンボリックリンクをはるという荒業なので予期しないなにかが起こるかもしれない、あくまで自己責任で。

Unity2Dの定番ファイル構成(自分用)

いろいろ試したけど、自分は下のようにするのが定番になってしまった。

配下にScene001などのフォルダをいれ、その中にSCENEやScriptをいれる。自分は2Dで作成することが多いため、画面ごとに分けていく方法が後々わかりやすくなってていい。

共通部分はcommonにいれる。

Scriptはできれば1Sceneにつき1つが自分は好きなんだが、部品ごとにScriptをつけたいことも多々あるので Scene001 の中に Script フォルダをつくり、そこにいれる。

基本的に共通のスクリプトはつくらないようにしている。シーンごとに完結するようにしている。

Unity2Dでのスマホの解像度定番設定、Android、iOS(自分用)

現在、スマホはAndroid,iOSとたくさんの機種があり、解像度もたくさんあるので、なかなか定番の解像度を設定するのは難しい。

たくさんの技術者とか端末が一通り揃っていればいいんだろうけど、個人でやってるときは、そんなわけにはいかない。また、そこまでがっちりと求めれていない場合もある。

自分の定番設定をここに備忘録として残しておく。

前準備としてプラットフォームはAndroid。

そして、自動回転を許可する向きは縦向きのみとしておく。だいたいスマホはこの設定でいけるとおもう。横向きとかで作成したい場合は適時変更すること。

まずはCanvas。レンダーモードを「スクリーンスペース・オーバーレイ」に。Canvas Scaler のUIスケールモードを「画面サイズに拡大」。参照解像度をX=1080,Y=1920にする。多分これがキモですね。将来的にはこの数値が上がっていくんだろうと思う。でもいまのところはこれで十分のはず。

Canvasの中にPanelを入れる。

以降、さまざまな部品はこのPanel内に配置していくことになる。

Panelの設定、middle、centerを中心にする。幅と高さは自動的に1080×1920になっているはず。

以上の設定で、だいたいのスマホに対応できるはず。この解像度の比率はきちっと守られ、余白が出た場合はCameraの背景色が表示される。自分はここを黒にしておきます。

以上です。

自分はこの設定でだいたい作ってます。

Unityで課金するときのOptionsとやらの!について

Unityで課金するとき、Unity IAPなるものをつかうと簡単にできるらしか。じゃあってんで、さっそくUnity IAPをいれる。

サービスウインドでなんかおかしなやつが出現した。

うえのWelcomってのはわかる。多分こう、課金に関係するSDKっぽいものをインポートするぜ!っていうやつだよ。

ただ下のOptionsがわからん。なにこれ?ってなるよね。英語読んでみるとGoogle Play Developerからなんかパブリックキー持ってきて入れろ的なことかいてある。どこにあるのよそれ?ってなるけど、ここにあったよ。

Google Play Console のここにあったよ キーが。つまりこれをいれろってことでしょ?(これをいれることで何がどう特をするのかわからん。Unityで何の分析してくれるのかもわからん。)

でもね、これって、Unityからいれられないの。

ここにはいらないの。何度入れでもエラーんなる。なんでよ?

正解は、サイト上のUnity Dashboardから入れろですって奥さん。

わかるかッ!!

ああ いかんいかん。 自分がマニュアルをきちんと読んでないからよね。でも、普通にUnity側から入るって思わない?おれだけ?

CS0012

 うーん、なんかいきなりVisual Studio 2019(Mac)にて47個のエラー吐きやがった。コンパイルエラーなんだそうだが、いまいち 原因がわからない。

 Ultimate Mobile Proというアセットを使ってるんだけど、こいつがなんか邪魔しよるっぽい。
 Visual Studio 2019(Mac)を再起動したら治った。なんなんだ。

 なんか悔しい。