uGUIで2色補完する(黒を○色、白を○色にする)

こういう3種類の絵を出したい時に、色違いのテクスチャーを用意するのってめんどくさいですよね?見た目の色違いだけなのに、テクスチャに色を乗算するだけではどうにもならないし... けどなんとか、左端の白黒のテクスチャ1枚で済ませたい。黒色の部分を○○…

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 にあるadbというコマンドを使うことでログを見ることができます。 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でも書けるみ…