ブログ記事一覧

AdfurikunCSharpSample

UnityでのAdfurikun(アドフリくん)動画広告C#サンプルコード

インタースティシャル動画、リワード動画、ネイティブ動画広告に対応しています。

Description

UnityでAdfurikun(アドフリくん)を利用する場合
動作サンプルにC#がないので作成しました。

なんでjsしかないの?アドフリさん。以下に対応しています

  • インタースティシャル動画広告
  • リワード動画広告
  • ネイティブ動画広告

<動作環境>

  • Unity5.6.3f1
  • adfurikunSDK_Unity_moviereward_2_11_0
  • Android7.1.2(Nexus5x)
  • iOS11.0.2/10.3.3(iPhone6Plus/iPhone5c)

DEMO:

adfuri

動画ネイティブの表示(Android)

スクロールビューでのページ切り替えに追従させています

Features

  • ネイティブ動画広告表示
  • インタースティシャル動画広告表示
  • リワード動画広告表示

Requirement

Adfurikunの動画SDK Unityを導入して下さい

Installation

$ git clone git@github.com:hmcGit/AdfurikunCSharpSample.git

  1. Android/iOSにSwitchPlatformします
  2. AdfurikunのUnitySDKを導入 Adfurikun動画SDK Unity

adfurikunPlugin_googlelib/adfurikunPlugins_2_xx_x.unitypackageなどからインポートします。

AndroidManifest.xmlはインポートされる物をそのまま利用してビルドできます。

3.testAdMainシーンを開きます

もしも2.のアドフリSDKを導入前にシーンを開いた場合、下記のヒエラルキーにあるPrefabが壊れていると思います。

その場合はAssets/Plugins/Adfurikunからヒエラルキー上にセットしてください。

  • AdfurikunMovieNativeAdViewUtility
  • AdfurikunMovieInterstitialUtility
  • AdfurikunMovieRewardUtility

h1

4.AdfurikunXXXUtilityに広告IDをセットします

h2

それぞれインスペクター上でIDをセットしてください。テスト用のIDほしいですよね。アドフリさんお願いします。

5.ビルド時の注意

ネイティブ動画はどうやら広告枠申請時のパッケージ名に合わせないと再生されません

リワード動画とインタースティシャルは任意でいけます

Usage

1.実行したら各ボタンを押して下さい。
画像はエディター実行時のものです。

便宜上画像では3画面を1つにくっつけていますが
各画面はスワイプで移動できます。
h3

Specification

1.スクリプト本体はscripts/ad以下のものです

  • MovieInterAdManager.cs インタースティシャル動画広告用

利用例)コルーチンでの呼び出しとして定義しています。


  • MovieRewardAdManager.cs リワード動画広告用

利用例)通常のメソッドです。


  • MovieNativeAdSelectStageManager.cs ネイティブ動画広告用
    (名前変え忘れた・・・)

利用例)シングルトンとして定義しています。引数はページ番号です。

呼び出し例は、scripts/TestAdfuri.csを参照してください。


  • スクロールビューについて

SnapScrollRectを利用しています。ピタッとスナップして気持ちよいです。


  • ページ切り替え時のネイティブ動画位置調整について

Canvas-Scroll ViewのonValueChanged()にてSelectStageAdManager.onChangePageAdAction()を呼んでいます。

onChangePageAdAction()では、MovieNativeADSelectStageManager::resetNativeMovieAd(int page)を呼んでいます。

ネイティブ動画の表示位置を設定するために「movieAdFrame0~2」のオブジェクトが各ページに設定されています。

Notice

1.サンプル実行について

リワード動画、インタースティシャル動画はパッケージ名任意でも再生されますが

ネイティブ動画はどうやら広告枠申請時のパッケージ名に合わせないと再生されません

NO_ADのエラーコードがかえってきます。ちなみに公式のサンプルもです。

2.インスペクターでのアタッチについて

MovieInterAdManager.cs/MovieRewardADManager.cs/MovieNativeADSelectStageManager.csは

それぞれ別のオブジェクトにアタッチしています。

これは同じオブジェクトにアタッチすると、それぞれのAdfuriSDKのCallbackが上手く呼ばれなくなるためです。

setMovieNativeAdViewSrcObjectなど、CallbackのあるObjectを設定する際に工夫すればいけるかもしれません。


3.iOSで動画再生時にBGMがかぶる

これはAndroidでは発生しないのですが、iOSではリワード・インタースティシャル動画が再生時に、

アプリ側のBGMが再生されてままでかぶってしまいます。

解決方法がわからなかったので、iOSのみBGM停止処理、終了後に再生とすることで対処しました。


4.iOSでのビルド

Editor/AdfurikunMovieRewardPostProcessにて以下を設定してビルドしました。

  • コンパイルフラグの設定
    Plugins/iOS/adnetworks以下にある各アドネットワークフォルダにそれぞれ以下のファイルがあります。

MovieInterStitial600x.mm/MovieReward600x.mm/MovieNative600x.mm

上記には「-fobjc-arc」追記しました。

基本的にはこれだけでビルドできます。以前よりずいぶん楽になった印象です。

Author

@hmc_j

www.alice3.net

Unityで2時間くらいで作ったお馬鹿アプリについて

「ちゃんとよめちゃう変換~ちんゃと よゃちめう 変換~」

アプリは下記から落とせます。

[blogcard url=”https://play.google.com/store/apps/details?id=com.seekerslab.yometyau”]Android[/blogcard]

[blogcard url=”https://itunes.apple.com/us/app/chin-yatoyo-yachimeu-bian/id1161114536?mt=8″]iOS[/blogcard]

どんなアプリ?

一昔前に流行った?こんな文章を実現します。

なぜだか読めちゃう文章を生成。たごんの あまたと さごいが おじななら とゅちうを 入え替れても よちめゃう でしょ?

タイポグリセミアと呼ぶらしいです。ケンブリッジ変換というあだ名も。

Unity初学者のお勉強教材として作った物です。

主な機能

上段の入力フィールドに入力すると、下段の入力フィールドで変換結果を表示します

シェア機能あり

コピー(クリップボードコピー)

 

ポイント

Unityを初学者に教えるためのサンプルとして作りました。

ソーシャル機能は定番のSocialConnectorです。

[blogcard url=”https://github.com/anchan828/social-connector”][/blogcard]

 

クリップボードへのコピーはUniClipboardです。

[blogcard url=”https://github.com/kyubuns/UniClipboard”][/blogcard]

 

UnityのInputFieldは、長押しコピーとかが出来ません。それができるAssetです。

[blogcard url=”https://www.assetstore.unity3d.com/jp/#!/content/36358″][/blogcard]

無料なのでいいかも。

 

最初は単語を分かち書きするためにTinySegmentatorを使用しました。

ですがかえって結果がおかしくなるので、単語が3文字以上であればシャッフルとしました。

アニメーションGif(クリックして下さい)

ほんと下らなくてすみません。ゲームじゃ無くてジョークアプリも作れるよってことでした。

Unityで雲にのっかったときのようなポヨンとする表現を単純に実装

[blogcard url=”https://github.com/hmcGit/FuwaMuni”]gitにもあげてます[/blogcard]
プロジェクトはgitにもあります。

こんなかんじで、ふわふわしたものにのっかったときに、ぽよん!とさせたいときに!
スクリプトでのごく簡単な実装です。

※ふわふわスクリプトは[blogcard url=”http://veniegames.com/?p=21″]Unityふわふわ浮いているようにする[/blogcard]を参考にしました。

スクリプト解説

ふわふわ、ぽよんとするオブジェクト

雲などのふわふわ動いて、のっかるとぽよんとするオブジェクトにアタッチします。RigidBody2Dとコライダーも忘れずに

cloud

FixedUpdate()のFuwaFuwa()がふわふわ漂うスクリプト(これは参考URLのものです)
OnCollisionEnter2D()がコリジョンに接触したらよびだされますが、
MuniMuni()がぽよんとさせるスクリプトです。
MuniMuni関数内で

としていますが、これでプレイヤーと雲を親子にし連続で小刻みにボヨボヨするのを防いでいます。

CloudControl.cs

void FuwaFuwa() { frameCnt += 1; if (10000 <= frameCnt) { frameCnt = 0; } if (0 == frameCnt % 2) { // 上下に振動させる(ふわふわを表現) float posYSin = Mathf.Sin(2.0f * Mathf.PI * (float)(frameCnt % 200) / (200.0f – 1.0f)); iTween.MoveAdd(gameObject, new Vector3(0, amplitude * posYSin, 0), 0.0f); } } ///

/// IEnumerator MuniMuni() { Vector3 ds = transform.localPosition; //すこしyポジションを動かしてむにっとした感じにする for (int i = 0; i <= 180; i += 20) { transform.localPosition = new Vector3( ds.x, ds.y – 0.5f * (Mathf.Sin(i * Mathf.Deg2Rad)), 1); yield return new WaitForFixedUpdate();// WaitForSeconds(0.016f); } } void OnCollisionEnter2D(Collision2D coll) { //コリジョンにEnterしたらむにむにさせる StartCoroutine(MuniMuni()); coll.transform.SetParent(this.transform); } }

ふわふわにのっかるオブジェクト

プレイヤーキャラクターなどの、雲などにのっかる方にはこちらをアタッチして下さい。
player
キャラクターには、RigidBody2dとコライダーのアタッチも忘れずに。
ポイントは、キャラクタの操作でジャンプした瞬間に、雲に設定していたParentを解除しているところです。

PlayerContro.cs

UnityでAdmob広告を使用する場合の注意

使い方は簡単なのですがたまに表示されなかったりする場合の注意など。

インタースティシャル広告を連続で出す

みんな大好きAdmob。インタースティシャル広告を連続で出す場合は注意が必要です。
広告を閉じた際にDestryo後、再度Requestを行わなければなりません【Destroy()およびRequestInterStitial()】
OnAdFailedToLoad/OnAdClosed/ OnAdLeavingApplicationなどのイベントを利用しましょう。

/// /// void HandleInterstitialClosed(object sender, EventArgs args) { if(interStitialView != null) interStitialView.Destroy(); RequestInterStitial(); } void HandleInterstitialFailedToLoad(object sender, EventArgs args) { if (interStitialView != null) interStitialView.Destroy(); RequestInterStitial(); } void HandleInterstitialLeftApplication(object sender, EventArgs args) { if (interStitialView != null) interStitialView.Destroy(); RequestInterStitial(); } }

広告が表示されない場合

広告がクリックできないときはAndroidManifest.xmlに

を追加すれば良いのですが、広告自体が表示されないことがまれによくあります。

こういうときは、大概以下のどれかが原因です。

    • 広告IDが間違っている、配信されていない

広告IDのコピペミス。「ca-app-pub-xxx/xxx」のスラッシュ以降のコピペ漏れ。申請すぐの使用でまだ配信されていない。

    • AndroidManifest.xmlがおかしい

これ結構有ります。特に、既存プロジェクトでごちゃごちゃしている場合にありがちです。一旦バックアップを取ってマニフェストファイルを整理するとあら不思議、表示されちゃったりします。

    • jarファイルの不足

古いjar(android-support-v4.jar、unity-admob-plugin.jar)が重複している場合はビルドエラーになりますが、不足しているとアプリが落ちたり広告が表示されなかったりします。
Plugins/Androidフォルダーを右クリックしてResolveClientJarsしましょう(PlayServiceResolver万歳)

161119-02

リストの中身をランダムに並び替え、ランダムな要素を取得

Unity関係ありませんが、結構使うので。たまに役に立ちます
ちなみにこの辺の投稿を参考にしています。
[blogcard url=”http://answers.unity3d.com/questions/486626/how-can-i-shuffle-alist.html”][/blogcard]

配列の中身を並び替え

リストの中身を並び替え

リストと配列の要素をランダムに取得

ついでに配列とリストの要素をランダムに取得するメソッドです。

配列の要素をランダムに取得

リストの要素をランダムに取得

Unityで簡単にSEをならしたい

もともとは、こちらの「○×つくろー」さんの記事です。

[blogcard url=”http://marupeke296.com/UNI_SND_No3_SoundPlayer.html”][/blogcard]

こちらを参考にして作成しました。

 

Git

Gitはこちらです

[blogcard url=”https://github.com/hmcGit/SoundControl”][/blogcard]

 

使い方

 

再生方法

[code]SoundControl.Instance.playSE(SE登録キー)[/code]

気軽にplaySEでどこからでも呼べるのでお手軽で気に入っています。

ただし、事前に効果音を登録しておく必要があります。

private SoundControl() (コンストラクタ)にて
SEを予め登録しておく必要があります。 登録には、呼び出しに指定するキーとファイル名を指定します
・「SE登録名(キー)」
・「SEのファイル名(Resourcesフォルダからのパスを記述」

audioClips.Add()を使用するSEの分だけ登録しておく必要があります。

インスペクター側を操作することなくスクリプトでどこからでも呼び出すことが出来ます。

先日、UnityのPhotonを使用して簡単な対戦ゲームを作る機会がありました。
logo

Photonで変数の値を同期する場合は、
・OnPhotonSerializeViewメソッドを利用する
・RPCを使用する

などの方法があるかと思います。download Pirates of the Caribbean: Dead Men Tell No Tales 2017 movie now

OnPhotonSerializeViewを使用する場合は上記の様な感じですよね。

一方、RPCを利用する場合は

こんな感じで[PunRPC]マークをメソッドを上につけておきます。
呼び出す際には、まあ下記のようにします。

このときハマったのが、あたりまえなんですが
PhotonViewと一緒にコンポーネントにアタッチしているスクリプトのPRCじゃないと
当然よべないこと!

そんなメソッドねーよ!と怒られまくりました。

あとはアニメーションを同期するためにRPCを使用して呼び出したのですが
Triggerタイプは問題無いけどFlagだとどうも同期が怪しいこと。理由は謎のままでした。

でもサンプルを見てやればロビーの処理やRoom作成も簡単にできるので
ちょっとしたネットワーク対戦ならサクサクッと作れるのが魅力です。

まだUnityを5.2.4で使っていますが、5.3系のコードが増えてきたのでエラーが出たときのメモ。

5.2ではこうだったのが

5.3ではこうなります。

UnityでParseのデータを取得する場合に標準では100件ずつになっています。
QueryのLimit()で最大1000まで増やすことができますが、1000件以上取得する場合
やり方が分からなくて悩んだのでメモします。

データ件数カウントと実際のデータ検索用にQueryを2つ用意するのが正しいのか?
わかりませんが、とにかくQuery.Limit()は1000が上限なので
1000件毎にLoopしながらSkip()をしていけばOKということが無事分かりました。
データ件数が多い場合はやばいかもしれませんがそれはおいておきます。

trailer film Transformers: The Last Knight

Android や iOSの 端末で一定時間何も操作をしないとスリープ状態に入り画面が暗くなります。

Unityでゲーム開発をしている際に、画面を傾けて操作するアプリを作っていてスリープに入らせたくないので調べました。

Unity でスリープ設定を変更するには Screen.sleepTimeout の値を変更します。

  • 秒単位での指定
  • 自動スリープ無効(SleepTimeout.NeverSleep を設定)

Unity Script Reference: Screen.sleepTimeout