fc2ブログ
 
■プロフィール

クリエイトウェーブ

Author:クリエイトウェーブ
開発における、諸々を書いていきたいなと思っています。
mail : info@createwave.jp

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ

■最近のトラックバック
■ブログ内検索

■RSSフィード
■リンク
uGUIドラッグを座標に変換
Unityでアプリを作るときに、uGUIでドラッグ実装をすることは良くあると思います。
IBeginDragHandler, IDragHandler, IEndDragHandler3つのインターフェースを継承するもので、検索するといっぱいでてきます。

ドラッグ中に
public void OnEndDrag(PointerEventData eventData)
{
   Debug.Log(eventData.delta);
}

等でeventData.deltaを使ってるとおもいますが、eventData.deltaから座標を取得したいときってあると思います。
把握したのでここに載せておきます。


uGUI(Canvas)内のIBeginDragHandler, IDragHandler, IEndDragHandlerを継承したMonoBehaviourのLocalPosition

そのLocalPositionをCanvas上のPositionへ変更し
MainCameraに対してWorld座標へ変換しています。

これでuGUI上でドラッグして座標を広いuGUI外のUnity2D(Sprite)や、3DのGameObjectに対して使える座標を使うことができます。


カテゴリー:Unity | TM(0) | CM(0)
UnityのAndroidビルドでVulkanエラー
Unityで色々仕事を受けてると、色々なAssetを使う事になります。
ゲームであれば、3Dモデルやモーション、音やUIなども良くAssetStoreから買いますし、ブルートゥースとかのAssetとか、その他諸々。

さてあるAssetを入れたら、アンドロイドのビルドが通らなくなりました。

BuildFailedException: Unsupported graphics API: OpenGLES3 or OpenGLES2 for this platform, but the selected graphics API is Vulkan. Please go to Player Settings and set "Graphics APIs" to OpenGLES3 or OpenGLES2.
とか
Error building Player: BuildFailedException: Unsupported graphics API: OpenGLES3 or OpenGLES2 for this platform, but the selected graphics API is Vulkan. Please go to Player Settings and set "Graphics APIs" to OpenGLES3 or OpenGLES2.

とか出てる。。。。

なんじゃこりゃ!?

しばらく格闘してやっと解決。忘れないうちにメモっておきます。
Project Settings の Androdの Graphics APIsの設定を修正したらビルドが通るようになりました。
デフォルトだとVulkanが上の方にあってOpenGLES3が下にあります。
この順番を入れ替えます。
VALKAN

Vulkanってなんだ?と思ったら、OpenGLに対して次世代のグラフィックAPIなんですね。
導入したAssetが新しいグラフィックAPIに対応してないって事のようです。

疲れた・・・



カテゴリー:Unity | TM(0) | CM(0)
CoCoaPodのUpdateで四苦八苦
アプリにAdmobを入れようとしたのですが、いつのまにか
GoogleMobileAds-v5.3.0.unitypackageから
GoogleMobileAds-v5.4.0.unitypackage
にバージョンがあがってました。

まあ新バージョンがいいだろうと、最新のを入れて組込んでIOSのビルドをかけたら、Unityが書き出したXcodeプロジェクの中にCocoaPodでSDKを自動でXcodeに入れてくれる「xcworkspace」ファイルがないじゃありませんか・・・

もちろん通常の「xcodeproj」ファイルはあるんだけど、AdmobのSDKを入れて「xcworkspace」が出来てないとかあり得るのか?と嫌な予感がして、もう一回Unityで出してみました。
そしたら、Xcodeプロジェクトは出来上がるけど、Unityのコンソールには赤文字エラーで、CoCoaPodで追加できないみたいなエラーが起きてる。。。

なんてこったい・・・CoCoaPod使わなくても、昔のようにXcodeの中にFrameWork追加したり設定かえたりしたら動くんだろうけど、相当な時間コストをかけた苦労が待っているのは容易に想像が・・・・CoCoaPodは捨てられない。なんとかせねば!!と

ターミナルで、書き出されたXcodeプロジェクトのフォルダで
$ pod update
コマンドを打ってみました。

案の定GoogleMobileAdsが追加できないエラーが出てますが、内容をみると
CocoaPodのバージョンが1.8.4だよ 1.9.0にあげてみたいな メッセージが見える。
なるほど、GoogleMobileAdsの最新バージョンは、新しいバージョンのCoCoaPodじゃないと駄目なのだろうと想像できました。

とりあえずCoCoaPodのバージョンあげる方法しらべてターミナルでコマンド実行・・・
$ sudo gem update cocoapods
うまくいかない。エラーが起きます。

CoCoaPodがおかしくなった時の対処法は、ググれば結構みつかるのですが
CoCoaPodアンインストールしたりCoCoaPodの設定ファイルをいじったり・・・
そして再びCoCoaPodインストール

$ sudo gem install cocoapods
コマンド実行

そしたら
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.

エラーじゃあ!!
これはヤバいぞ!! ヤバすぎる!!
CoCoaPodアンインストールしてしまったのに、インストールできない。
FireBaseもよく使ってるのに、このままじゃIOSのビルドが出来ないぞ!!と青ざめる結果に。

そして色々ググって調べたら、同じ症状の人ばかり・・・
解決法は何人か書いてあるのですが、結局CoCoaPodの1.9をあきらめて、1.8.4を指定してインストールしたよというものばかりでした。
つまり、1.9.0からうまく入らないみたいです。

ここで、CoCoaPod1.8.4を入れて、AdmobのSDKも一つ前の5.3.0を入れるか
AdmobのSDKを5.4.0にして、なんとかCoCoaPodのバージョンをあげるか、
の2択を迫られてしまいました。

最新のが使えないの色々まずい気もするので、もう少し上げる努力をしようかと思ったのですが、ここからも一筋縄でいきませんでした。

CoCoaPodは、MacOS上で動いてるRubyでインストールする方法がよくみつかるのですがRubyじゃなく
$ brew instal cocoapods
でインストールしましょう

というのを見つけて、これならいけるのでは?とやってみたら
インストールはされるのですが、途中でエラーが発生してる。
とりあえず、今はCoCoaPod1.10.0なのは、わかりましたが、これは大丈夫なのか? と思ったらやっぱり駄目でした。

海外サイトでRubyのバージョンをあげればうまくいく可能性があるよ!というのをみつ方ので
$ brew uninstal cocoapods
を実行しRubyのUpdateへ

Rubyは2.6.5だったので、2.7にあげました。
これでうまくいくかと思いきや結果は同じ。

このあたりで、下げるか迷いましたが、CoCoaPod1.10.0はBrewなら成功してる人はいる。
もう一回Brewで挑戦。

やはり途中でエラーでうまくいかないのですが
----------------------------
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/xcodeproj
Target /usr/local/bin/xcodeproj
already exists. You may want to remove it:
rm '/usr/local/bin/xcodeproj'

To force the link and overwrite all conflicting files:
brew link --overwrite cocoapods
----------------------------
とエラーメッセージが出ている。Google先生にかけてみたら
----------------------------
リンクを強制し、競合するすべてのファイルを上書きするには:
brew link --overwrite cocoapods
----------------------------
を実行しなさいと書いてあるじゃないですか・・

$ brew link --overwrite cocoapods
$ brew uninstall cocoapods
$ brew install cocoapods

実行でうまくいったあぁぁ。
ちゃんとメッセージは読まないと駄目ですね。。
とりあえず、数時間の戦いでした。

カテゴリー:Unity | TM(0) | CM(0)
Flash Animation Toolset の使い方
去年のUnityのAssetStore半額セールで買った「Flash Animation Toolset」
C#でgotoAndPlayやStopも出来るしマスクも使える、期待通りの優れものAssetでしたので紹介したいと思います。
これは使えそう!!ただ日本では情報が少ない(マニュアルの英語ページもわかりやすいのですけど、やっぱり敷居がありますよね・・)

サンプルに使うAnimateファイル(FlashProファイル)は、ボーンを使ったFlashアニメ
ボーン素材なのでパーツが分解されている。
Flash1.png

それをボーンを使ってタイムラインを起こしてあります。
Flash2.png
素材は、クリエータ「りんこ」さんにに作成して頂きました。

こういう動きをします。こういうのをすぐ作っちゃうのはクリエータさんって凄いですよね・・・ 
[広告] VPS


さて本題、これを「Flash Animation Toolset」を使ってUnityに取り込んでみます。
当然ですが、「Flash Animation Toolset」をUnityにインポートする必要があります。自分は購入しましたが無料の試用版もあります。
Flashファイルは、Assetフォルダ以下の適当なところに置きます。今回はAssets/Scenesに置きました。
Flash4.png

まず、Unityで使うアニメは、ルートシーンのタイムラインではなく、ムービークリップ単位になってる必要があります。
そして、このムービークリップにリンケージをつけます。今回は「test_anime」とリンケージをつけました。
後でラベル名で、gotoAndPlayやStopで制御したい場合は、ムービークリップのタイムラインにラベル名をつけておきましょう。
Flah3.png

次にAnimate上の「コマンド」メニューから「コマンドの実行」を行います。
Flash5.png

コマンドファイルを聞いてきますので、Unityにインポートされてるコマンドファイルを指定してあげましょう。
「Flash Animation Toolset」を普通にインポートしていれば
Asset/FlashTools/FlashExport/FlashExport.jsfl がコマンドファイルになります。

コマンドの実行が終了するとFlaファイルの隣に「Flaファイル名_export」フォルダが出来上がり、中にUnity用のファイルが出来上がります。
Flash6.png

フォルダの中には、Unity用のムービークリップアニメファイルがあります。
Flash8.png

出来上がったファイルの中のPrefabファイル(青い立方体マーク)をHierarchyに投げ込みましょう。
Flah9.png
見事にムービークリップがUnityに・・・

Flash10.png
再生すると、ちゃんと動きます。

ついでに、ちょっとC#で制御してみましょう。
以下のような「SwfTest.cs」を作ります。


MainカメラなりCreateEmptyなりを実行して作るかなりで、「SwfTest.cs」を適当なGameObjectにはりつけます。
public SwfClip SwfClip;
public SwfClipController SwfClipController;
は、Hierarchyから先程投げ込んだPrefabを登録します。
Flash11.png

実行すると、C#から制御できるのが確認できます。

※追記2019年1月20日
Unity2018.3で動かないという事なので調べてみました。
自分はUnityのEditorはJetBrainのRiderを使っているのですが、
Assets/FlashTools/Scripts\Editor/FTEditorフォルダの中のSwfEditorUtils.csの217行目のZlibStreamメソッドの第3引数の指定の所が赤くなっている・・・・
動かない

調べてみると、
Assets/FlashTools/Plugins\Editorフォルダの中のIonic.Zip.Unity.dllファイルからCompressionLevelプロパティの値をとりそこなってるように見える。。。Ionic.Zip.Unity.dllがうまく読み込めていないって事なんでしょうか
ZlibStreamメソッドの第3引数はなんだろうとしらべたら、ブーリアン値だったので、とりあえずtrue入れてみました。
修正

そしたら動いた。問題ないように見えるけどfalseにしたらどうなるんだろう・・・・
超優秀なAssetですし、そのうち修正されると思いますが、とりあえずこれで対処・・・・

UniSwfとかは、無理やりFlashを使ってる感があったし、結局あまり使わなかったのですが、こちらは自然とUnityのプレファブとして使える感があって抵抗がない。。。 のでいいんですよね。

カテゴリー:Unity | TM(0) | CM(0)
PlayMakerとFlash Animation Toolset買ってみました
11月11日のみの1日限定半額セールで
PlayMakerとFlash Animation Toolset買ってみました。

PlayMakerは有名ですが、ビジュアルスクリプトってホントに便利なんですかね?
手伝いのプロジェクトでも使われてるのがいくつかあったので気になってたのでいい機会なので・・・

UnityとFlashの連携は前はUinSWF購入して使ってたのですが、取扱中止になってるしAnimation Toolsetなんとなく凄そうだったので・・・

UniSWFのときもそうですが、結局あまり使わない&Unity2018の新アニメツール(未だPreView版ですが)に慣れてきたのもあり、やっぱりあまり使わない気も・・・

ただ外にアニメ発注するときは、未だフラッシャーの方のほうが圧倒的に多いですし・・・連携できるなら
私自身はプログラマーなので、あまりアニメをいじるのは得意ではありません。

カテゴリー:Unity | TM(0) | CM(0)
次のページ