Unityで64bitの設定をしても「このリリースは google play の 64 ビット要件に準拠していません」エラー



↑このように設定してビルドすると64ビット対応のAPKができて今まで普通にアップデートできていたわけですよ。

それが先日から突然「お前のアプリ64ビットでも動くけど32ビットのネイティブコードしかないわ。エラーな。」などと言い出したのです。

aaptでapkを調べたら

ちゃんとarm64-v8a があるのでこれは64bitに対応してると思う。

unityのフォーラム見てみたら同じような症状の人がいてアンサーでx86のチェック外せっていうのがあったので外したらうまくいった!

これでエラーともおさらば ^^v

Unityでファイルを削除する時の注意点



exsistFileName="hoge.png";

            var captureDirectory = Application.dataPath;
            var captureFileName = exsistFileName;
            var capturePath = Path.Combine(captureDirectory, captureFileName);
            if (File.Exists(capturePath)) File.Delete(capturePath);

こんな風に書くとファイルを削除することができますが

A meta data file (.meta) exists but its asset ‘Assets/hoge.png’ can’t be found. When moving or deleting files outside of Unity, please ensure that the corresponding .meta file is moved or deleted along with it.

こんな警告をされることがあります。

画像は削除したけどメタデータは残ってるよ。
メタデータも一緒に削除しないと恐ろしいことになりますよ、という脅しらしい。

なので上の命令の後に

exsistFileName="hoge.png.meta";

      captureDirectory = Application.dataPath;
            captureFileName = exsistMetaName;
            capturePath = Path.Combine(captureDirectory, captureFileName);
            if (File.Exists(capturePath)) File.Delete(capturePath);

こんな風にセットで削除すれば怒られない。

ふふふ。やったぜ。


復元ソフト EaseUS Data Recovery Wizard を使う



iPhone用のアプリを作るときにwindowsからmacにデータを移すことがよくあり、いつもUSBメモリーを使っているですが、うっかりデータを消してしまったりUSBメモリーが壊れたりして困ることがあります。

そんな時にあると安心なのが データ復元ソフト EaseUS Data Recovery Wizard です。操作も簡単なのでおススメです。

↑ こちらからどうぞ ↑

使い方は簡単です。

USBメモリーの中身。
テキストやexcel、MP3ファイルや画像、動画などが入っています。
動画は1ギガを超えるものもあります。
しまった!
誤ってフォーマットしてしまったぞ
そんな時も
EaseUS Data Recovery Wizard
があれば安心です。
起動画面。
復元したいドライブを選んでスキャンをクリック。
ドライブのスキャンが終わると復元できるフォルダが表示されます。
スキャン時間は1.5ギガ使用の8ギガUSBメモリーで約5分。
復元したいフォルダを選択してリカバリーをクリックします。

フォルダ名は名前が変わっていますがファイル数など
からどれがどのフォルダかだいたい分かりました。
リカバリーが始まります。
1.5ギガ程度の復元なら1分くらいで完了しました。
画像フォルダ。
フォルダ名はpictureからDIR3に
ファイル名は先頭の1文字が#にリネームされていました。
問題なく閲覧できます。
こちらはファイルフォルダ。こちらはほとんどのファイル名が
そのまま復元できていました。
1つだけgoto.txtが#OTO.TXTになっていました。
MP3の再生問題なし。エクセルやテキストファイルも
完全に復元できていますね。
最後に動画ファイル。1ギガを超えるものもあります。
片方のファイルのプレビューが表示されていませんが果たして?
#IMG2641.MOV
問題なく復元できていました。
#IMG2642.MOV
こちらは1ギガ超えのファイルでしたが
これもバッチリ復元 ^0^

EaseUS Data Recovery Wizard いいですね。無料版もありますのでインストールしておけばもしもの時に安心です。

↑ こちらからどうぞ ↑

———————

unityでボタンのプレハブ作ったらOn Clickが使えなくなる問題


——–

なんか2018年のいつからかプレハブの仕様が変わった? ボタンのプレハブのOnClickに関数を設定できなくなりました。なんでや?

Kantokuいうオブジェクトがボタン押したときに実行する関数を持ってる。
ButtonAのOnClickにD&Dして関数を設定
ヒエラルキーからプロジェクトビューにD&Dしてプレハブ化。
するとなぜかさっき指定したはずのKantokuが消える。
Noneの横の丸ボタン押してKantokuを探してもいない。
もう一度ヒエラルキーからKantokuをD&DしようとしたらD&Dができない!はじかれる! なんでや!

以下、これが正しい解決方法かどうかわからないですが方法を書いておきます。

2019/7/19追記 :この方法はダメです!エラーが出ます

スクリプトをアタッチしてるオブジェクト(ここではKantoku)をDuplicateで複製します。監督の影武者です。
名前を KantokuKage にしました。
それをプロジェクトビューにD&Dしてプレハブ化してみる。
ボタンプレハブのOnClickのNoneの横にある丸ボタンを押すと、Kantokuはいないが影武者のKantokuKageはいる!
これを選択してNo Functionから関数を選択すればいけました。

俺のunityはおかしくなってしまったのか・・・? 前はこんなんせんでよかったのに・・・ なんでや!

——- 2019/7/19 追記 : エラーの出ないやり方————

なんかやり方 わかったかも。

プロジェクトビューでボタンのプレファブに直接スクリプトをD&D。
するとインスペクタにアタッチしたスクリプトが表示されるので
それをNoneにD&D。これで関数にアクセスできます。

う~ん? これが正しい方法で今までの私のやり方が間違っていたのか? もうほんまよう分からん。

————————————-

unityでたくさんのパラメータを1つのセーブデータで保存する

HPやアイテム所持フラグなどたくさんのパラメータを保存する時。今までは

PlayerPrefs.SetInt("SVhp", hp);     //HPをセーブ
PlayerPrefs.SetInt("SVmp", mp);     //MPをセーブ

こんな風にひとつひとつセーブしていたのですが多くの項目をPlayerPrefsで保存するのはあまり良くないらしいので、1つのセーブデータで保存できないかといろいろ考えました。

まず各パラメータを区切り文字カンマ「,」で区切って一つの文字列に結合してセーブ。

public void SaveR()
    {

	strget = null;      //文字列初期化。こいつに文字列型に変換したデータを全部足してぶち込む

        for (int i = 0; i < 10; ++i)                        //アイテムデータを文字列で結合
        {
            strget = strget + Item[i].ToString()+",";       //数値型を文字列型に変換して区切り記号のカンマ付けて足していく
        }

        for (int i = 0; i < 20; ++i)                        //宝箱データを文字列で結合
        {
            strget = strget + Tres[i].ToString() + ",";
        }

        strget = strget + Aria.ToString() + ",";    //エリア情報
        strget = strget + KenLV.ToString() + ",";   //剣のレベル
        strget = strget + Money.ToString() + ",";   //お金

        posMX = transform.position.x;     //プレイヤー位置情報
        posMY = transform.position.y;
        posMZ = transform.position.z;

        strget = strget + posMX.ToString("F2") + ",";       //ポジション情報はフロート型なので小数第2まで保存。
        strget = strget + posMY.ToString("F2") + ",";
        strget = strget + posMZ.ToString("F2") + ",";

        strget = strget + mp.ToString() + ",";    //MP
        strget = strget + hp.ToString() + ",";    //HP
        strget = strget + maxhp.ToString();       //最大HP


	PlayerPrefs.SetString("svItmTre", strget); 		//文字列型でセーブ
    }

↑ こんな感じでカンマで区切ってひとつの文字列にする。
エリアは3で所持コインは101610でその後ろが位置情報です。
これをロードしてみます。

ロードするときは読み込んだセーブデータを区切り記号のカンマで配列変数に分解し、数値型に変換して各データにぶち込む。文字列を指定した区切り文字で分解してくれるSplit命令がすごい便利で感動しました。

public void LoadR()
    {

	LoadMan = PlayerPrefs.GetString("svItmTre", null); 	//ロード


        //string[] strArray = strget.Split(',');        //この命令 めちゃ便利ね~
        string[] strArray = LoadMan.Split(',');         //読み込んだセーブデータを区切り記号のカンマで配列変数に分解。

        for (int i = 0; i < 10; ++i)
        {
            Item[i] = int.Parse(strArray[i]);           //あとはそれぞれの配列変数を数値型に変換して各データにぶち込めば完了
        }

        int a = 0;
        for (int i = 10; i < 30; ++i)
        {
            Tres[a] = int.Parse(strArray[i]);
            a++;
        }

        Aria = int.Parse(strArray[30]);
        KenLV = int.Parse(strArray[31]);
        Money = int.Parse(strArray[32]);
        posMX = float.Parse(strArray[33]);
        posMY = float.Parse(strArray[34]);
        posMZ = float.Parse(strArray[35]);
        mp = int.Parse(strArray[36]);
        hp = float.Parse(strArray[37]);
        maxhp = float.Parse(strArray[38]);


        this.transform.position = new Vector3(posMX, posMY, posMZ-7);             //セーブした位置に移動

    }
スタート地点のエリア0でLoad dataでロードすると
エリア3に移動しました。
所持コインも101610でちゃんとセーブとロードができました!

アクションゲーム Blatt Adventure

Unityで作ったゲームをApp Storeで公開しています。

無料なのでぜひ遊んでみてください。

ダウンロードはこちら ↓

————————————————————————————————

プロモーション動画 ↓

ダウンロードはこちら ↓

Unityで3D酔いしないように工夫する

    

   

こういう風に壁沿いを歩いているとき
キャラが壁で隠れると壁が近すぎて酔いそうになる。
これはカメラが壁に近すぎるのが原因だと思う。
そこで壁を厚くしてカメラを壁の中にめり込ませる。

カメラには壁の中に張ったテクスチャを映させる。

プレイヤーが壁の中に入れないように外側に膜を作る。

という作戦を考えたですよ。
これがダンジョンの壁なのです。

ブレンダーで作ってます。
見やすいようにソリッドで表示。

左が正面から見た壁。

右が壁の裏がわ。

青い線が法線の向きです。
裏の面を選択して法線を方向転換させます。

めり込んだカメラに映してもらうためです。
裏の面を選択してEキーでその場に押し出してから内側に移動させます。
四隅を選択して面を作成。

これがプレイヤー侵入防止の膜になります。
これでイメージ通りの壁ができました。

Xの距離は実際にプレイして調整します。
壁沿いを歩くと
うんうん。

まあ最初よりはだいぶ良くなったような気がしないでもないな。

3D酔い対策はなかなか難しいですな・・・

——————— 4 / 7 追記 ——————————

もっといい方法を思いついたのであった。

左の壁が今までの壁。

今回は下のほうにナイフで切り込みを入れて
画像で選択してる面だけを内側に押し出します。
その押し出した面の法線は壁の内側に向けておきます。

これをカメラに映してもらいます。

他の面は外側に向けて法線を出しておきます。
最後にプレイヤーが壁に入れないように膜の面を作成。

この面は外側に向けて法線を出す。

さあ壁沿いを歩いてみよう!
プレイヤーと壁が重なると
内側に法線を向けた面だけが描写されます。

うんうん。これは酔わない。

酔いやすい私の脳がそう言っているので間違いない。

やった! ^0^

    

Validate App後のSUMMARYでCertificateがUnknownと表示される

ついでにProfileもNone

      —

Validate App後のSUMMARYで

Certificate: Unknown
Profile: None

と表示される


xcodeのバグで実際はCertifcateもProfileもあるようだ。

それを知らずに不安感に包まれたままアップロードを開始すると

No accounts with iTunes Connect access have been found for the team “hogehoge”~
「お前のチームにiTunes Connectにアクセス権 持ってるやつおらん。」

とか言い出してエラーになったものだからパニックになったわけですよ。

解決策としましては
Distribute Appを選択後にUploadかExportか選べるんですが
そこでExportを選択してファイルを保存します。

xcode→Open Developer Tool→Application Loader

Application Loaderを起動してさっき保存したファイルを選択してアップロード。

これでいけました。

証明書関連のエラーはマジでパニックになるのでやめてほしいなぁ。。。

——

Unityの動作がWindowsとMacで違う問題について

Translateの速度が違う?

—————————————————— ——————————————————

Windowsのunityで開発してMacのxcodeでビルド→iPhone転送→動作確認

という手順でやっていたのですが、どうもwindowsでの動作とmacやiPhoneでの動作に違いがあるように思えるのですよ。

この青いゲートをくぐるとスピードが上がります。
もしゲートをくぐらずに遅いスピードのまま進むと扉が閉まって先に進めない、というステージ。

windowsでは上の画像のようになるのですが、MacやiPhoneでプレイすると青いゲートをくぐらなくても先に進めてしまうのです。

なんか扉が落ちてくるスピードがwindowsよりも遅いので先に進めてしまう。

前に「Unityで自分に向かってくる敵の弾を作る」という記事でプレイヤーを狙い撃つ弾道を作ったのですが、

windowsではこのようにちゃんと命中します。
ところがMac&iPhoneでは弾が遅く、どこ狙ってんの状態。

使ってるwindowsパソコンのほうが性能が高いのでスペックの違いで速度が違うのかな?とも思いましたが、MacとiPhoneは同じような動きなのですよ。

この扉や狙い撃つ弾はTranslateで動かしていました。

↓こんな風に
this.transform.Translate(0, -0.3f, 0);

そこでこの扉をTranslateではなく、rigidbodyで重力落下させてみました。

:ゲームプレイ中断画面:

するとこんどは両方とも手前でちゃんと扉が落下しました。扉が落ちる速度に違いは出ませんでした。

となると怪しいのはTranslateですよ。

windowsとmac&iPhoneではTranslateの速度が違うのでは?

検索しても同じような症状の人がいないのでまだよくわからないのが現状です・・・

      ---

Word Press5で syntax highlighterを使う

WordPress5は最悪のアップデート

//////////////////////////////////////// ////////////////////////////////////////

WordPressのバージョンが5になってもう最悪です。よくもここまで使いにくくできたものだと感心するレベルです。

まあ使ううちに慣れるであろうとも思いますがなんかプラグインがおかしい? あと書いてる途中で記事のプレビューを見ても変更が反映されていません。もうほんまアホ。

一番困ったのはソースコードを表示するcrayon syntax highlighterが使えなくなってるっぽいこと。過去に書いた記事のソースコードが正常に表示できていません。

SyntaxHighlighter Evolvedというのが新エディターに対応しているそうなのでこれを入れてみる。

そうするとブロック追加の項目に
SyntaxHighlighterCodeがでてくるのでこれを選択。

右のCode Language で言語を選択します。あとはコードをコピペすればいけるだろうと思ったらまだ正常に表示されない。

どうも前の
Crayon Syntax Highlighterが動いているとダメみたいなので
Crayon Syntax Highlighterを停止する。

これでまあ一応ソースコードは表示されてはいるものの、前より隠れる文字が多くなってスクロールバーで横にスクロールさせないと見えないので不便だなぁ、と思っていたら

グーグルさんからメールが来て

あなたのサイトで以下の問題が見つかりました。
「画面より広いコンテンツ」

↑こんなことを言われる。

多分ソースコードの長い行が折り返されていないのでスクロールしないと見えないよ、画面より広いよ

と言いたいのであろう。

SyntaxHighlighter Evolvedのバージョン3系は長い行を折り返す機能がサポートされていないぽい。

プラグインの設定から

バージョンを2.xに変更する。

すると長い行が折り返されるようになりました。

でもまだ見にくいなぁ。。。ソースコードが表示されている右上の「ソースを表示」というのをクリックすると見やすい画面が出てくるので以降はここをクリックしてくださいまし。

↑こんな画像を用意しないといけないなんて・・・

もうほんまWordPress5は最悪のアップデートですわ・・・

//////////////////////////////////////// ー広告ー