読者です 読者をやめる 読者になる 読者になる

Unityで作ったアプリのAndroid版で set_interactable can only be called in main thread などというエラーが出て困った話

Unityで作ったアプリのAndroid版で set_interactable can only be called in main thread などというエラーが出て困っておりました。メインスレッド以外でset_interactable呼ぶなや!ってことみたいです。どうもAdMobのinterstitialがCloseした時のCallbackで…

AOTコンパイルってなんぞ?

C#などの.Net言語はCILという中間言語にコンパイルして、それをVM上で動かすようにできています。しかし、実際にVM上で走らせなければどんなコードが動くか分からないってのはセキュリティ上よくないので、iOSではそれを許していません。UnityはVMからJITコ…

UniRxを使ってて気になったこと

AddToしているのものをIDisposable.Dispose()して、そのあとオブジェクトを廃棄したら二重解放になる? 結論、ならないので気にしなくて大丈夫な模様。下記のコードでは、Disposeした後、AddToしたgameObjectを破棄しているが、特にエラーは発生しなかった。…

vimで日本語をsortしたらうまく並び替えられなかった(解決済み)

vim

えんこ あやつ うんちん おすぷれい いんしつこういう文字列を、あいうえお順に並び替えたかったのですが、いつものようにVisualモードで範囲選択した後 :'<,'>!sortっとすると あやつ えんこ いんしつ うんちん おすぷれいというように、意図しない順番にな…

UniRxを1日勉強してみた感想

結論 まず最初に結論を。ゲーム開発がメインの私的にはObserveEveryValueChanged, Timer, AddTo(安全のため必須)あたりを使えれば十分かなぁという感想。実は、気づいていないすごい便利な使い方とかあるかもしれないので、オススメの使い方がありましたら教…

Unityで作ったアンドロイドアプリが吐くログを確認する方法

Android SDKへのパス/platform-tools にあるabdというコマンドを使うことでログを見ることができます。 Android SDKへのパスは、Android Studioを立ち上げて、「Android Studio」->「Preference」->「Android SDK」として、上の方にあるAndroid SDK Location…

typeface animatorとoutlineの併用で、ちょっとハマった

Typeface Animatorという超絶簡単にオシャレにテキストを動かせるAssetがあります。https://www.assetstore.unity3d.com/en/#!/content/37445先日、こちらのアセットとOutlineコンポーネントと一緒に使ってたらうまく動かなくてハマったのでメモ。どういうふ…

CosやSinをテーブル引きにする効果

- 追記 2017/2/8 23:20各所からツッコミを受けました。 テーブル引きの恩恵を受けるようなコードは、現在の実践環境ではあまりなく、普通に関数を使ったほうが有利というのが説が多いです。 以下のテストはキャッシュが効きやすい状態のテストなので一応、テ…

UnityException: Unable to install APK! Installation failed. See the Console for details

UnityでAndroid版をBuild And Run しようとした時に、突如として表題の例外が発生するようになって困った。answers.unity3d.comこちらに解決策が↑Player Settings -> Other Settingsで、Bundle Version Codeをあげたらインストールできた。たまにUnityが落ち…

use of undeclared identifier 'Unity' とか 'UI' のエラー

UnityでiOS版のビルド時に、Scripting BackendをMono2xにしてStriping Levelを何某かにしていると、以下のようにXCode側でエラーが出ることがあるもよう。とりあえずstripping levelをdisabledにすれば、一応回避できる。Mono2xでのビルドは、基本デバッグ用…

XCodeでビルドした時に「Appの有効なaps-environmentエンタイトルメント文字列が見つかりません」というエラーが出る

XCodeでビルドした時に「Appの有効なaps-environmentエンタイトルメント文字列が見つかりません」というエラーが出た。これは証明書にPush Notificationが無いかららしい。最近のXCodeは「Automatically manage signing」にチェックを入れておくと証明書を勝…

2017年、Vim周り見直し

Vim

半年に1回は見直しています。今回は結局大して変えませんでした。世間では、Neovimに乗り換えましたとか、プラグイン管理をdein.vimに乗り換えましたという人が多いようですが、自分はNeovimは、まだ不安があるのと、そんなにメリットが分かっていないので…

AndroidManifest.xml:20: error: Error: No resource found that matches the given name (at 'theme' with value '@style/Theme.IAPTheme のエラー対応

UnityでAdMobを入れ直したからか、Android版をビルドするときに以下のようなエラーが出るようになっちゃいました。 CommandInvokationFailure: Failed to re-package resources. /Users/wakepon/Library/Android/sdk/build-tools/23.0.2/aapt package --auto…

ゲーム中にバンドルバージョンを表示する

バグ報告を受けたときに「えっ、それどのバージョンのロムで発生したの?」って聞きたいときにタイトル画面などでバンドルバージョンを表示するようにしておくと便利だったりします。バンドルバージョン自体はUnityEditor.PlayerSettings.bundleVersionで取…

OnTriggerEnter2DとOnCollisionEnter2Dの違い

OnTriggerEnter2DとOnCollisionEnter2Dの違いが分からん!更に言うと、OnCollisionExit2DとOnTriggerExit2Dの違い、OnCollisionStay2DとOnTriggerStay2Dの違いも分からん!っとなったので調べました。2Dについて書いていますが、基本3Dも一緒だと思います。 …

【Unity道場】Unity 5.4 & 5.5 新機能キャッチアップ講座に行ってきた。

「Unity 5.4 & 5.5 新機能キャッチアップ講座」に行ってきました。このような回を無料かつ軽食付きで開催してくれるUnity Japan様には頭が上がりません。ありがとうございます。個人的に気になったポイントと所感をメモ。 Unity5.4 GPU Instancing ライトプ…

Unityで transform.localPosition.x = 1.0f; ができないわけ

C#初心者の私がUnityで最初戸惑ったのはtransform.localPosition.x = 1.0f;というようなことができないことです。これをやろうとすると、 error CS1612: Cannot modify a value type return value of `UnityEngine.Transform.localPosition'. Consider stori…

UnityでUnit Testを行う

先日、勉強会でUnity Tests Runnerというのものがあることを知りました。もともと、Unity Test Toolsというものの一部だったのが、Unity5.3から組み込みになったらしいです。docs.unity3d.comというわけで使ってみました。使い方は簡単で、図のように「creat…

AudioSourceの再生が終わったかどうかを取得する方法(が見つからない...)

表題の件ですが、結局いまのところ解決していません。AudioSourceクラスにはisPlayingというプロパティがあります。一番最初に思いつくのは、これがfalseになったら再生が終わったと判断するという手です。しかし、これには落とし穴があって、Pause()を呼ぶ…

C#のlock構文

FruitsNinjaのCloneのソースコードを見ていてc#にlock構文があることを知りました。https://www.assetstore.unity3d.com/jp/#!/content/65879 マルチスレッドのプログラムでは、ちゃんと排他制御をしないと問題がおきます。その代表格がsingletonクラスで、…

全てのシーンに存在し、一つしか存在してはいけないマネージャー的存在の実装

kan-kikuchi.hatenablog.comこの記事を読んで、最近読んだFruitsNinjaをCloneしたアセットのことを思い出したので記事にします。https://www.assetstore.unity3d.com/jp/#!/content/65879ところで、このアセット、凄いです!画像変えるだけで、vegetable nin…

個人ゲーム開発者が送ってみた無料でレビューしてくれる海外サイト30個

まず最初に"無料で"と書きましたが、無料の場合はレビューをしてもらえるかどうかの保証はありません。そもそも無料のレビューは受け付けていないところもあります。基本的には以下の記事を参考にしています。 www.find-job.net上記の記事の中にはサイトが閉…

Unity Remote 5を使ってみた

先日、実機確認のためのビルド時間に悩んでいるという話をしたら、Unity Remoteというのを教えてもらったので、使ってみました。Unity Remoteとは、ゲームの実行はUnity Editor上で行われるのですが入力はUSBで繋いだデバイス側から行えるというものです。ま…

UnityのAsset「Android Native Plugin」でエラー(AdMobとの相性が悪いようでした)

UnityのAsset「Android Native Plugin」でビルドエラー(最新版だけ?)UnityでGoogleのGame Service系を簡単に使えるようにすることで有名なアセット「Android Native Plugin」を導入したのですが、ビルドしようとすると下記のようなエラーが出ていました。 C…

Unityのシェーダーを書くときに確認しそうなページメモ

ビルトインのシェーダー変数 docs.unity3d.com 定義済みシェーダープリプロセッサーマクロ docs.unity3d.com Shaderのプロパティについて docs.unity3d.com "UnityCG.cginc"内の便利関数 docs.unity3d.com サーフェスシェーダーの使用例たくさん docs.unity3…

Unityのレンダリング順について

Unityの、ShaderLabにはQueueというレンダリング順をコントロールするためのタグがあります。詳しくは、以下のページに書かれていますが、自分でも自分の言葉でまとめてみます。 タグ名 内部インデックス 説明 Background 1000 他より前にレンダリングされま…

Unityで、Editorではシェーダーがちゃんと実行されているのに実機ではシェーダーがちゃんと実行されなくてハマった件

まず第一に、 Shader.Find( シェーダー名 )としていたのですが、これが失敗していました。初歩的ですいません。これはシーンから直接参照されていないリソースは、Resourcesフォルダに入れておかないとアプリに組み込まれないからです。というわけで、Resour…

トイカメラ風のフィルター

トイカメラ風フィルターです。上下を暈すだけという、ちゃっちいテクニックです。Shaderの練習のために作ってみました。ぼかし画像を作る部分は標準アセットのBlurのほぼコピペです。ぼかし画像を一枚しか作っていないこともあり、イマイチですね。本当は複…

Unityで自作ポストエフェクトを試してみた。

fspace.hatenablog.com上記のサイトを参考にしてUnityで初めてシェーダーを触ってみました。UnityのシェーダーはShaderLabと言って、頭の部分にシェーダーに値を渡すための記述を書き、下の方にCgかHLSLでシェーダーを書くみたいです。一応GLSLでも書けるみ…

GooglePlayGameServicesとGameCenterとAdMobを同時に利用しようとしてハマった件

GooglePlayGameServicesとGameCenterの導入に際しては、こちらが詳しいです。 yasuaki-ohama.hatenablog.com導入の仕方の説明は他の方の説明に譲って、GooglePlayGameServicesとGameCenterとAdMobを同時に使う際の注意。というか、たぶん同時利用は難しいと…

ちょこっとベターなSingletonMonoBehaviour

tsubakit1.hateblo.jpこちらの記事を参考にしたSingletonMonoBehaviourを利用していたのですが、SingletonMonoBehaviourの絡むバグが発生し、それを発生しにくくできないかと思って、ちょこっと変えてみました。上記のSingletonMonoBehaviourでは、Instance…

以前作ったSoundManagerの改良

効果音を鳴らした後にスクリプトからFadeOutしたり、FadeInとかしたくなったので、以前作ったSoundManagerを改良しました。qiita.com (この時はqiita使ってた...) Handleを返すようにして、Handle経由でFadeIn, FadeOutができるように それにともない。同じ…

Unityの単位系メモ

今日は本当はUnity Remoteの話を書こうと思ったのですが、ちょっと後日に回します。Unityのグリッドサイズとか、Cubeのサイズとか、ちょいちょい忘れるのでメモ。 項目 単位 主グリッド 1m*1m 副グリッド 10cm*10cm Cubeのサイズ 10cm*10cm Sphereのサイズ …

UnityでiOS向けのビルドを短時間で終わらせる簡単な方法

この記事の環境:Unity version 5.4.0f3 Unityで開発していると、どうしても実機でテストしなくちゃならないことがあります。例えば、加速度センサを使ったゲームとかはPC上ではテストできません。そこでiOS用にビルドしなくちゃいけないんですが、これがめち…

BlenderからUnityへ出力する際のメモ

Blenderで作ったモデルをFBXに出力する際のスケールや回転が、出力設定によって色々変わって混乱したのでメモ。 BlenderでApply Transformにチェックを入れないで出力した場合 Blenderで出したモデルは頂点座標は 1.0/100.0 されて、スケールに100倍掛けられ…

transformは遅い説の検証

qiita.comこちらの記事によるとtransformは内部でGetComponentをしているので遅いらしいです。気になったので自分でも試してみました。テスト環境 Unity5.4.0f3 MacBook Pro (Retina, Mid 2012) iPhone se まずは以下の様なコードで。 using UnityEngine; us…

Editorで編集中に気づくと何故かNullReferenceExceptionのエラーが出ている件

Editorで編集中に気づくと、たまに、 NullReferenceException: Object reference not set to an instance of an object というエラーが出ていて、編集中に?何故?Editor拡張周りに何かバグが?って思っていたのですが、違いました。理由は、Reset関数のせい…

MonoBehaviourのAwake、Start、Updateという関数が呼ばれる仕組み

MonoBehaviourを継承してAwake、Start、Update等という関数を作るとUnity側で勝手に呼んでくれますが、これがいったいどういう仕組で動いているのかが謎でした。最初、MonoBehaviour側にvirtualな関数、もしくはabstractな関数で定義されているのかとも思っ…

Unity+iOSでitunes connectにアップロードする際にERROR ITMS-90086が出た時の対処

先日、itunes connectにアプリをアップロードしようとしたら以下の様なエラーが出ました。 ERROR ITMS-90086: "Missing 64-bit support. iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK or later. We re…

ゲームビューでの見え方を確認しつつシーンビューでパラメータ調整する方法3つ

1, シーンビューとゲームビューを並列に並べて作業する 一番シンプルな方法。編集画面が狭くなりがちなのが難点です。 2, シーンビューの見え方をゲームビューと同じにする Cameraを選択する 「GameObject」->「Align View to Selected」を選択する こちらは…

UnityのInputFieldでちょっとハマったこと

文字を入力するUIとして便利なInputFieldを使っていてちょっとハマったのでメモ。入力された文字は、InputField以下のTextオブジェクトに入り表示されます。 しかしTextオブジェクトが十分に大きくない場合は、最初に入力した文字が削られたものしか入ってい…

Hierarchyに、オブジェクトのアクティブを変更するチェックボックスと、オブジェクトの編集可能不可能を変更するアイコンと、無効なコンポーネントがアタッチされているかどうかを表示。

長いタイトルですいません。下記のスライドの中でHierarchyに関数エディタ拡張の例がいくつか紹介されていたのですが、 http://www.slideshare.net/shotababa359/unity-49731764この中から自分的に使いそうだった オブジェクトのアクティブを変更するチェッ…

Unity5.4.0にしたら、Pluginが重複してるっていうエラーがでた

Unity5.4.0にしてiOSのビルドをしようと思ったら以下の様なエラーが、 Plugin 'GoogleMobileAds.framework' is used from several locations: Assets/Plugins/iOS/GoogleMobileAds.framework would be copied to <PluginPath>/GoogleMobileAds.framework Assets/Plugins/</pluginpath>…

Unity(5.3.5)で丸影がちゃんとでない件 〜解決済み〜

皆さん、丸影好きですか?僕は好きです。ShadowMapよりたいてい処理が軽いし、ジャギらないし。Unity version 5.3.5f1 で丸影(ProjectorのShadow)を使ってみてたのですが、下の画像の様にちゃんと影が出なくなっていました。Planeには影も形もなく、Cubeには…

usingとIDisposableを使って簡易的な処理計測クラスを作る

先日、書いたusingとDisposerを使って簡易的な処理計測クラスを作ってみました。 using UnityEngine;//for Debug.Log and Debug.Assert using System; public class ProcessTimer { System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwa…

Unityでビルド後に自動でRomをアップロードする拡張

Unityで作ったAndroid用のRomを他の人にテストプレイしてもらうときに、FTPツールを使っていちいちアップロードしていたのだけど、それがいちいちめんどくさかった。そこで自動で行うようにしてみました。c#でFTPを利用するのは以下を参考にしました。 Simpl…

RAIIをC#でやるには?

RAIIとは? Resource Acquisition Is Initializationの略で、直訳すると"リソースの取得は初期時に"となります。これはC++やD言語で一般的なテクニックでリソースの取得と破棄を、変数のコンストラクタとデストラクタに関連付けて行うものです。例えば、下記…

C#のLinqについてまとめた。

c#

Linqについて C#にはC++にはないLinqという素晴らしい仕組みがあるらしい。脳に刻みこむためにメモした。以下のスライドを参照してまとめただけ。 http://www.slideshare.net/shotababa359/c-linq-to-objects 利用方法 using System.Linq を書くだけ。!!Linq…

DoTweenのcanvasGroup.DoFade( 0, 1 ).OnComplete( completeFunction )みたいなことがしたい

サンプルプロジェクトをgithubにあげてます。github.comこないだUnityの勉強会に行って、UnityのAssetでTweenアニメをしてくれるDoTweenというものがあるのを知りました。dotween.demigiant.com そこで出てきたサンプルコードで以下の様なものがありました。…

Excelから翻訳データを読み込んでTextに突っ込むTranslateManagerを作った

タイトルでだいたい説明した感じですが、ポイントとしては、 TagProcessorクラスを介することでタグ解釈ができる(後述) UnityEngine.UI.Textのtextに$$で始まるキーを入れておくと、対応する訳を入れてくれる Resources.FindObjectsOfTypeAll()でヒエラルキ…