02 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 03

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

こんぬつわ。UnityでAdmobの動画リワードを使う方法だよ。でもまだリワード終了のハンドラーとれてないの 

おはようございます。
もう3月ですねー
早いものです。

あ、坂内っす。

最近Admobさんが動画リワードを始めたよ!ってTLを見たので、導入方法ちょっと調べてみたよ。

あ、もちろんUnityでの方法ですけど。

まず、Admob側で動画リワードの広告枠を作ります。


次にこちらでAdmobのUnityPluginをおとしまーす。
https://github.com/googleads/googleads-mobile-unity/releases/tag/v3.0.3

パッケージになっているのでImportをしましょう。

Importが終わったら、こんな感じで動画を出すことができます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using admob;

public class Test : MonoBehaviour {

void Awake() {
Debug.Log("準備開始");
Admob.Instance().loadRewardedVideo("ca-app-pub-XXXXXXXXXXXXX/XXXXXXXXXXXXX");
}

public void OnClickShowVideo() {
if (Admob.Instance().isRewardedVideoReady()) {
Admob.Instance().rewardedVideoEventHandler += AdManager_rewardedVideoEventHandler;
Debug.Log("再生されるはずだが");
Admob.Instance().showRewardedVideo();
} else {
Debug.Log("準備されてないだと?");
}
}

void AdManager_rewardedVideoEventHandler(string eventName,string msg) {
Debug.Log("Event: " + eventName);
if (eventName == AdmobEvent.onRewardedVideoStarted) {
Debug.Log("リワード動画はじまったよ!");
}
if (eventName == AdmobEvent.onRewarded) {
Debug.Log("リワードもらえるよ!");
}
}
}


・・・のはずなんですが、動画は再生されても、リワード動画のイベントハンドラーが取れない・・・・
これ使い方間違ってますかね?(笑)

イベントが取れないんす・・・・・だれか正しいやり方おせーて!
この辺まで触ってるうちに俺のスマホがダメになってきて(ケーブルつなげてても充電がされないで、減る一方・・・ついに電池が切れて動かなくなりました)、これ以上試せません!

って感じで、Admobの動画は簡単に出ました。

そのうち、ちゃんとハンドラーとる方法追記したいと思います。

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】スプラッシュ機能使ったときの話【iOS】 

こんにちは。
大坂です。

早くも3月になりましたね…。
まだ微妙に寒い日が続いてますが皆様体調には気を付けてくださいませ。

さて今週も短いですけどさっそく。
ちょっと前にアプリを出したときにUnityのスプラッシュ機能を使ってスプラッシュを出して、
iOSの実機確認していた時にロゴの位置が微妙だったので変更したものをもう一回設定したときに嵌ったお話。

現象としてはこんな感じ。

※クリックすると見れます

なんか変更前ロゴが見えてから変更後のロゴが見えるという変な状況に。
特に解決策もわからずにUnityを設定を見直したり何回もビルドしなおしてみるとか色々やっても解決せず。
実機の方のアプリ削除してから入れなおしてみても直らない…。

でまぁしばらく嵌った後に何となく実機を再起動してみたら直りました。
実機のほうに変な情報が残ってしまうんですかね…。
単純なことで直ってよかったのですが、結構な時間嵌ってしまいましたorz

Unityのスプラッシュ機能を使っていて、ロゴを変更したいときなんかは気を付けてみてくださいませ。

では今週もこれで終わりです。
また来週ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】まだ口痛いっす。とりあえずuGUIでドラッグアンドドロップのやり方 その2 

こんにちは。坂内っす。

寒い日が続きますね。
タイトル通り、いまだに口内一部が痛いっす。

さて、前回の続きでUnityでのドラッグアンドドロップの話です。
前回はこちら”【Unity】まだ口痛いっす。とりあえずuGUIでドラッグアンドドロップのやり方 その1

前回はドラッグ側の処理を書きました。
今回はドラッグされる側、以下スクショで言うと、上側にある白い四角の方の処理です。

こんなコードを上の白い四角それぞれにつけます。

DropTarget.cs
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class DropTarget : MonoBehaviour, IDropHandler {
public GameObject Item {
get {
if (transform.childCount > 0) {
return transform.GetChild(0).gameObject;
}
return null;
}
}

public void OnDrop(PointerEventData eventData) {
if (Item == null) {
// 何もないところへドラッグ
DragObject.dragObject.GetComponent().color = new Color(1f,1f,1f,0f);
DragObject.dragObject.transform.SetParent(transform);
} else {
// すでに何かあるところへドラッグ>入れ替え
// 元々あったものを元へ戻す処理
Item.GetComponent().color = new Color(1f,1f,1f,1f);
Item.transform.SetParent(Item.GetComponent().parentTransform);
// 新しくドラッグされてきたオブジェクトの処理
DragObject.dragObject.GetComponent().color = new Color(1f,1f,1f,0f);
DragObject.dragObject.transform.SetParent(transform);
}
}
}


※動きはクリックしてみてね!

こんな感じの動きになります。

ドラッグアンドドロップなので、ドロップしたら白い絵を変えるとかの処理にすれば、それっぽい感じになるかと思いますよ!
Hierarchyの動きを見ると分かると思うのですが、ドラッグしたアイテムは上のオブジェクトの子供になる感じになってます。
ただ、今のままだとドラッグされたオブジェクトの文字色を透明にしてるだけで、位置とか調整していないので、変に触れちゃったりします。
その辺はRaycast Targetいじって触れなくしたりとか、お好きに手いれてね!

先週のと合わせれば、これでドラッグアンドドロップが簡単に実装できます!

ってところで、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】懲りずにカーソルネタだよ。カーソル変えてみたんだよ。 

こんにちは。
大坂です。

たまに目がかゆくなったり、鼻水が止まらなかったりと
今年も花粉の時期が近付いてる気がします…orz
嫌な季節です。

さて今週も懲りずにカーソルネタ。
Unityでのカーソルの変え方ですね。

ゲーム内で終始違うカーソルを使うのなら「PlayerSettings」の「DefaultCursor」に画像を設定すれば変わります。
ここを変えるとゲームを起動しないでもEditorのGame中にカーソルを持っていくとカーソルが変わります。


あと注意点は変更したいカーソルの画像の設定でTextureTypeを「Cursor」にしないと絵がうまく表示されません。


でまぁプログラムから特定のオブジェクトに入った時だけ変えたいとか。
こんな感じのプログラムをオブジェクトにつければいいのかな。
    public Texture2D cursor;

/// <summary>
/// オブジェクトに入った
/// </summary>
/// <param name="eventData">
public void OnPointerEnter(PointerEventData eventData) {
// カーソルを変更
Cursor.SetCursor(cursor, Vector2.zero, CursorMode.Auto);
}

/// <summary>
/// オブジェクトから出た
/// </summary>
/// <param name="eventData">
public void OnPointerExit(PointerEventData eventData) {
// カーソルをもとに戻す場合
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
}


第二引数のVector2.zeroを指定しているところはカーソルの当たる座標の指定です。
今の設定だと左上に当たる座標があるのでずらしたい場合はここに指定しましょう。
画像の中央にしたい場合は「new Vector2(cursor.width / 2, cursor.height / 2)」とかって指定すると
画像の中央で判定されます。

「public Texture2D cursor」にTextureTypeを「Cursor」にした画像をつけたら、
スクリプトを張り付けたオブジェクトにカーソルが当たったら画像が変更されます。
こんな感じ。


今週もこれで終わりですよ。
また来週ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【Unity】まだ口痛いっす。とりあえずuGUIでドラッグアンドドロップのやり方 その1 

こんにちは!
親知らず抜いて、そろそろ1週間が経ちそうですが、いまだに縫った頬の内側が痛くて腫れてます・・・
歯抜いたところは大丈夫そうなんですけどね・・・・
まぁあと1週間もすれば痛みなくなるでしょう・・・

さて、Unityの話ですが・・・先週まともにUnity触ってないんす・・・

まぁ軽く。

uGUIにて、ドラッグアンドドロップを使う方法。
このネタ自体は他のブログさんを参照にさせて頂きました。

ただ、うまくいかなかったため、俺が勝手にいじった感じです。
まず第1回目はドラッグする側のオブジェクトについて。

こんな感じで画面を作ります。

上にある白い四角2つが、それぞれCanvas直下のdrop1とdrop2になります。
動かす方は、DragObjの下にあるdrag1~drag4になります。

まずは以下のコードを作成。

DragObject.cs
using UnityEngine;
using UnityEngine.EventSystems;

public class DragObject : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler {
public static DragObject dragObject;
public Vector3 initPosition;
public Transform parentTransform;
private CanvasGroup canvasGroup;
private Transform canvasTransform;

public CanvasGroup CanvasGroup { get { return canvasGroup ?? (canvasGroup = gameObject.AddComponent()); } }
public Transform CanvasTransform { get { return canvasTransform ?? (canvasTransform = GameObject.Find("DragObj").transform); } }

public int charaNo;

void Awake() {
initPosition = transform.localPosition;
}

public void OnBeginDrag(PointerEventData eventData) {
dragObject = this;
transform.SetParent(CanvasTransform);
CanvasGroup.blocksRaycasts = false;
CanvasGroup.alpha = 0.5f;
}

public void OnDrag(PointerEventData eventData) {
Vector3 posi = Input.mousePosition;
posi = new Vector3(posi.x - 240f,posi.y - 427f,0f);
transform.localPosition = posi;
}

public void OnEndDrag(PointerEventData eventData) {
if (transform.parent == canvasTransform) {
transform.SetParent(parentTransform);
}
dragObject = null;
CanvasGroup.blocksRaycasts = true;
CanvasGroup.alpha = 1.0f;
}

public void Update() {
if (dragObject == null) {
transform.localPosition = initPosition;
}
}
}


OnDragメソッドのポジションについては、画面のサイズ/2で計算してます。
今回は 横480x縦854で指定しているので、Vector3はnew Vector3(posi.x - 240f,posi.y - 427f,0f);となっています。

このコンポーネントを、各drag1~drag4につけます。
各オブジェクトの「public Transform parentTransform;」
には、DragObjをアサインします。

これでドラッグでオブジェクトが動くようになりました!いぇい!
※動きはクリックしてみてね!




とりあえず今日はこんな感じ!
次回はドロップ部分について書いていきたいと思います。

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0