Unity IAP(アプリ内課金)実装でつまずいたところ
Unityへのアプリ内課金を実装で躓いた
作成中のゲームアプリ「RoidChanDerby」にアプリ内課金を実装しようとしたところ、躓いたため備忘録として。
しかし、回避策が強引なため、あとあと問題があるかも。
UnityChannelがImportされない
UnityエディタのServices内から、IAPをEnableにし、DLL関係をimport。
ところがここでビルドしようとするとエラーが。。。
「Editor.dllが複数ある」
というエラーが。表示された。
importしただけで、この問題。
ネットで検索したところ、一度削除してと書かれてあったので
とりあえず、一度削除して、再度importするも現象変わらず。
エラー箇所を調べていくと、
このUnityChannelというものが見つからないとのこと。
ただ、ネットを調べるとやはり「Import」でUnityChannelもimportされるらしく、かなり困りました。
別アプリで確認
毎回そうなのですが、製作途中で問題に遭遇した時は、
最小単位のプロジェクトを別途用意して確認します。
すると。。。
別アプリでは、しっかりとUnityChannelがImportされています。
同じ操作だけど、入っているものが違うから(RoidChanDerbyの方はすでに色々作りこまれている)なのか、こういうタイプの問題は厄介です。
回避策
その後も、怪しそうなアセットを消したり、再Importを繰り返すも、問題解決せず。。
結局回避策としては、別プロジェクトで作成した「UnityChannel」フォルダをごっそりそのままこのプロジェクトにコピーすることで解決しました。
この操作が正しい気はしないので、後々問題にならなければいいのですが。。
また、調査中に発見したのですが、XiaomiSDKがimportされている場合も問題になりそうです。
PlayFabとの連携
課金実装でかなり時間を費やしたため、PlayFabとの連携(カタログ情報の取得)などは、次回まとまった時間が取れる時にやります。備忘録も書きます。
Googlplayのアプリ審査が長くなってから、課金システムの実機確認に時間がかかるのでつらい。。。
課金要素はやめようかな?
Resourcesフォルダから画像ファイル取得?Inspectorに指定?スプライトを動的に切り替える
この記事の対象者
unity初心者向けです。私がunity始めたころに躓いたところを重点に。
つよつよプログラマーじゃないので専門用語は使いません。というかわかりません。
Resourcesフォルダから画像ファイル取得
Resourcesフォルダ内に複数の画像ファイルがあり、それをゲームシーンのオブジェクトに動的に貼り付け、切り替える方法です。
電光掲示板に、着順番号を表示します。番号は画像ファイルになっています。
Resourcesフォルダから画像を読み込み、指定した番号に応じて、電工掲示板の画像を変更します。
Scene内のRank_1~Rank_5の2Dスプライトを変更します。
Resourcesフォルダからの読み込み
<Resources/Image>内に切り替えたい画像を入れます。
void Start()
{
Sprite sprites = Resources.LoadAll<Sprite>("image/");
}
上記コードで、sprites配列にimageフォルダ内のスプライトを読み込めます。
が、ここで問題があります。
読み込んだsprites配列を見てみると、
1,2,3,4・・・とは並んでおらず、
文字としての昇順に並んでいます。1、10,11,12・・・
この並びだと、
「2番を表示したい!」
と思ったときに、配列の[9]を指定しなければなりません。
画像の枚数が変わると順番が変わり破綻します。
(画像名をチェックするなどすれば可能ですが、メンドイ)
Inspectorから指定してあげる
私は、ちょっと調べてめんどくさい、と感じたら別の方法で実現しようと考えます。
個人開発なので、コードの見た目や賢さは気にしません笑
開発中のRoidChanDerbyはスクリプトで一括ロードはせず、Inspectorに指定して使っています。個人的にこっちのほうが楽。
public Sprite sprites;
クラスのメンバ変数を上記のように「public」にすると、unityのInspector上から設定できるようになるので、そこに直接設定します。画像の枚数が多いとこの方法は面倒ですが。。
上記画像のように、Inspectorからサイズを指定して、直接画像ファイルを設定します。
こうすることで、配列の引数と画像の番号を明示的に合わせてやることができます。
sprite配列の中身が自分の並べたいように並んでます(2番を表示したければ、配列も「2」の指定でOK!)この方法は、追加は楽ですが削除は大変です。。。
読み込んだ画像を2Dスプライトに指定
読み込みが終われば、あとは2Dスプライトに指定するだけです。
GameObject.Find("Rank_1").GetComponent<SpriteRenderer>().sprite = sprites[2];//sprite配列からspriteを設定
GameObject.Find("Rank_2").GetComponent<SpriteRenderer>().sprite = sprites[1];//sprite配列からspriteを設定
GameObject.Find("Rank_3").GetComponent<SpriteRenderer>().sprite = sprites[5];//sprite配列からspriteを設定
GameObject.Find("Rank_4").GetComponent<SpriteRenderer>().sprite = sprites[8];//sprite配列からspriteを設定
GameObject.Find("Rank_5").GetComponent<SpriteRenderer>().sprite = sprites[15];//sprite配列からspriteを設定
上記例では、2DスプライトオブジェクトをGameObject.Findで取得した後、SpriteRendererコンポーネントのspriteに、先ほどInspectorで設定したsprite配列のspriteを設定しています。
このコードをStartに記述し、実行すると、
こうなります。
コード全体は以下です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ImgChange : MonoBehaviour
{
public Sprite[] sprites;// Start is called before the first frame update
void Start()
{
GameObject.Find("Rank_1").GetComponent<SpriteRenderer>().sprite = sprites[2];//sprite配列からspriteを設定
GameObject.Find("Rank_2").GetComponent<SpriteRenderer>().sprite = sprites[1];//sprite配列からspriteを設定
GameObject.Find("Rank_3").GetComponent<SpriteRenderer>().sprite = sprites[5];//sprite配列からspriteを設定
GameObject.Find("Rank_4").GetComponent<SpriteRenderer>().sprite = sprites[8];//sprite配列からspriteを設定
GameObject.Find("Rank_5").GetComponent<SpriteRenderer>().sprite = sprites[15];//sprite配列からspriteを設定
}}
「RoidChanDerby」予約受付中!アイコンも新しく描きました。
競馬風ゲーム「RoidChanDerby」予約受付中!予約特典あり
現在制作中のゲーム「RoidChanDerby」の予約を「予約トップテン」様で受付中です!
予約特典もありますので、ぜひ予約してみてくださいね!
細かいゲームの仕様は、リンクページ内に主なゲームのシステム説明などがあります。そちらをご覧いただけたらと思います。
ブログでは、ゲーム画面イメージを紹介します。
予約特典
予約していただくと、感謝のしるしとして、予約特典のMyRoidをプレゼントいたします。Myroidは、育成し、レースに出走させることができます!
レースメイン画面
レースのメイン画面で、勝利するRoidを予想して投票を行います。
また、各種メニューやMyRoidファームへの移動を行えます。
MyRoidファーム
マイロイドの確認、育成を行います。
各種連中メニューには一長一短あります。
出走したいレースに調子が最大になるよう調整しましょう!
レコードとネットワークランキング
レース投票画面から、システム画面に移動し、プレイヤー情報を登録することで、ネットワークランキングに登録し、他
のプレイヤーとランキングを競うことができます。
登録できる項目は画像のように、たくさんあります。
どこか一つでも1位を取ることができるかな?
イラストも描きました。
ゲーム制作の合間に、(ゲーム制作も仕事と家事の合間ですが笑)息抜きで絵も描いています。今までのブログやツイッターアイコンに使用していた女性画像なのですが、笑顔じゃない上に、見下ろしアングルなんです。
これから作成したゲームをリリース、宣伝していくうえで、「見下ろし、笑顔無し」は良くないと急に気になりだし、少し笑顔の元気な感じの女性を描きました。イメージ戦略大事。
・今まで
・新しいアイコン カオラちゃん
アップ
全身
宣伝していくにはこっちのほうがいいだろう!マリンスポーツをする活発系女子!
相変わらずの厚塗りです。成長は…してませんね…背景も描けないのでチャレンジしていません。
描くのは楽しいんだけど、やり始めたらゲーム制作停滞するので、ほどほどに描こう。
競馬風ゲーム「RoidDerby(仮)」作成中
RoidchanDerby製作開始
イラスト練習もそこそこに、2作目のゲーム製作に取り掛かっていました!
4月末に着手し、GWと土日を注ぎ込んでいます。1作目で多くの事を経験したので、今回はそこそこ順調に進んでいます☆
それでは、製作中のゲーム概要を紹介します❕
ゲームタイトルは「RoidchanDerby」、アンドロイド(ロイドちゃん)が競馬の様な競走をするゲームです。
世に沢山タイトルがあるジャンルですが、自分の好きなジャンルである事、作ってて楽しい事、好きなタイトルの新作が個人的に残念だった事が、このジャンルを選んだ理由です☺馬の代わりのアンドロイドとしてクエリちゃんを使用させていただいております。
メインの流れとしては、
①競馬の様にレースの勝敗を予想し、投票します💴
※連単・ワイド・三連複など実装
②レースを開始し、観戦。
③投票したロイドちゃんが勝てば配当に応じてコインがもらえます💰
※画面はすべて開発中のものです。
また、コインを使ってオリジナルのロイドちゃんを育成、レースに出走し、優勝賞金を得ることもできます。
とことん予想と投票を楽しむか、
最強のロイドちゃんを育成しダービー勝利を目指すか…❕
ネットワークランキング実装予定。
レースシーン(各走行制御)は概ね完成。
現在、投票画面と払い戻しを作成中です。
これが終われば、マイロイドちゃん育成システムの構築と、ネットワークランキングの実装。
その他細かい所の修正(実際ここが1番しんどい)を行い、テストしてリリースまで持っていきたいです!
所感
ここからは所感です。内容はタイトルと全く関係ありません。
私はモノづくりにおいて1番やってはいけない事が、そのプロジェクトを完成させられず終わる事だと思っています。
完成しなければ、経験だなんだ言っても、完成した事による学びが得られません。良いものでも悪いものでも完成しない事には評価、を得られません。
芸術家じゃないので未完の作品の評価に価値はありません。
また、完成させる迄の期間も短い方が良いと思ってます😤
「寝る間も惜しんでやれ」と言いたい訳ではなく、「かしこく作れ」と思うんです。
最近twitterで見かけたものの中に、「開発エンジンを使って作ったものは実力じゃない」的な話題を見かけましたが、開発の苦労や技術力が評価される時代じゃ無いですよね。モノづくりなので。私は便利なもの、ネットで調べたら転がっているものはどんどん導入して、どれだけ楽して完成させるか。も重要な能力だと思っています🤔
最近twitterを見て非常に気になったので書きました...
イラスト→スキルアップ(画力的な意ではない)とartstationへの投稿
イラスト練習 仕上がりレベルは向上?
ブログの投稿間隔があいてしまいました😅
イラスト練習がメインで最近ようやく仕事も落ち着いてきて、ゲーム製作に取りかかった状況です😆
ゲーム製作の方は次回以降進捗等を出せたらなと思っております。
今回は、1月から始めたイラスト練習の経過報告。
最新の絵がこちらです。
タイトル「swimsuit woman」
リアルテイストの人物(女性)ばかり描いてます。(ゲームには向かない...)
アニメ絵とかも描いたりしてますが、私はリアルテイストが好きで女性が好きみたいです(笑)
好きじゃないと続かないしね...
リアルテイスト描き始めた時がこちらです。
この頃に比べて、自分のイメージとしてはいい感じの仕上がりかなと思います。
顔の肌と髪がいいイメージで出せました。
でも、これは私自身の画力が上がったとかでは全然ありません。ほとんどが模写ですし、一から線画描くともう構図からバランスからボロボロです。
ただ、CLIPSTUDIOの使い方は上達したかなと感じています。レイヤーの特徴やブラシの使い方、どういう塗り方をすればいいか等。ペイントツールではありますが、使い方を磨くって、ゲーム制作やプログラムと通ずるものがありますね。ライブラリとか。
毎回描く時にいろいろトライしているのですが、今回はこれまで練習していたグリザイユ画法では無く、普通の厚塗りで描いてみました。
顔に陰影つける時に、少し緑や青をいれたり、目に暗い影をキツめにいれるなどして見るといい感じになりました😏
髪の毛は下塗りにクリスタのAI自動彩色レイヤーを重ねてクリッピング、「塗りなじませブラシ」で下塗りのレイヤーを塗り替えながらと彩色レイヤーを徐々になじませ、髪の流れや光の感じ、束感を出せました。
ここは今回一番うまくいったことなので、覚えておこう。
ArtStation
話は変わりますが、
「ArtStation」
という絵を投稿する海外のサイトがあります。(絵に限らず「Art」を投稿する場ですね)リアルテイストな画像が多く投稿されていて非常に勉強になります。眺めているだけでも面白い。みんなうま過ぎてやる気失せることもありますが(笑)
このように、投稿されたartのサムネイルがザーッと表示されます。「latest」順に並べると投稿された新しいもの順に表示されます。気になった画像はサムネイルをクリックして詳細を見て、気に入ったらいいねとダウンロードしています。
ここからは更に余談ですが、、
私も何度か投稿したのですが、サムネイルをクリックして詳細を表示する「view」すらあまりされません。ましてやviewした後の「Like」なんてなかなか貰えません。
このように、過去作はLikeが見事に全部「1」でした。今回は、過去最高のview13とLikeを6もらうことができました。
サイトの仕様上恐らくもう伸びませんが、詳細を見て「Like」まで貰えるってやっぱりうれしいですよね。サムネがたまたま周りと比べて目に入っただけかもしれませんが。やる気はすごく上がります!リアルテイストめっちゃ練習したいです。
ちなみに、ほんとにうまい人の絵にはコメントがついています(笑)
コメント貰えるようなレベルになりたいですね。
ゲーム制作もしたいしやりたいこと一杯。。。
【絵心無しの】イラスト練習_厚塗り書き方の備忘録
液タブを買って、CLIP STUDIO PAINTの無料体験でイラストの練習を開始して1ヶ月が経ちました😆平日は1日1時間程度ですが、絵描きだとちょっとやって成果が見えるからいいですね☆
感想としては、「絵描くのめっちゃ楽しくて、当初の目的であるゲーム素材を描くを忘れそう」な感じです✨趣味になってしまいそう(´・ω・`)
うまい人のブログ見たり(特に、マエコのデジタル工房さん。まず絵が好き)本見たりしながら、描き方、ブラシの設定やレイヤー設定など試行錯誤していて、自分で上手くいったと思うものを残しておかないと、明日にでも忘れそう...という事で備忘録として残していこうと思いました。
まず、一か月前の練習開始前と、現在の比較です。個人的にはレベルアップしたなーと思っています。絵心全くない自分でもツールをうまく使えば、なかなか描けるなと。
テーマは適当に家にあったスナフキンの置き物を女性化。
それでは、描き方の備忘録(完全自分用)
上にも書いた様にマエコのデジタル工房さんを尊敬しており、構図や目、描き方、塗り方など参考にしています。
次回ゲーム用に、英国貴族風の女性を描きました。イメージはそう悪くないと自分では思っています💨CLIP STUDIO PAINTでpng出力するとちょっと色見変わるのがよくわかりませんね😅
基本的にはグリザイユ画法?なるもので描いていて、そこは調べたら出てくるのでいいですが、髪は独自の描き方(ブラシの順番)が描きやすくいい感じになるので、そこをメモ。
髪:
①ブラシ:水彩毛筆 色濃い目
ベースとなる髪型を髪の流れに沿って描く。なんとなく透け感がいい
②ブラシ:濃い水彩
塗りつぶし。髪の流れに沿って。透けまくっているので。
③ブラシ:濃い水彩
陰影、ハイライトをつける。カラーパレットはこのエリア(ライン)がよいらしい
ハイライトと暗い部分は注意して描く。
④ブラシ:塗り&なじませ や なめらか水彩
陰影、ハイライト部分をなじませていく。
明るい色、濃い色で、 髪の流れが分かるように数本描く。これまあまりなじませない。
⑤ブラシ:濃い鉛筆
明るい色で、髪一本を意識して、数本描く。あまり書きすぎると微妙になる。
⑥新しいレイヤー オーバーレイ、ブラシ:塗りなじませ
光と影を全体的に調整する
以上。
髪型描くの楽しくて、いろいろな髪型をネットで調べては描いています。服や小道具、体も描けるようになりたいのに、髪型を着せ替え風に楽しんでしまってる...
精進あるのみ🙌
センスを言い訳にするのは、挑戦と努力をした後
仕事や私生活で、
わたし自身よく自分に言い聞かせているのは「センスや才能を言い訳にする前に、まず努力、やって見る事」です🙌
センスが無い事を言い訳にして逃げがちなので、、
趣味でゲーム開発をしていますが、絵心が無い事ためグラフィック系の素材は全て他者制作のものに頼っています。ただ、自分のイメージにピッタリのグラフィックがなかなか見つからず、少し妥協したり、、
でもゲームのグラフィックって一番目に留まる重要な部分ですし、妥協したくない...というジレンマ。
そのジレンマの中で、冒頭のモットーを思い出しました✨
絵心(センス)が無くても、今の時代、便利なツールを駆使して訓練すれば、ある程度のレベル(自分が納得できるレベル)のものは描けるんじゃないか?センスで差が出るのはプロの世界の話じゃないか?
と思い、せめて主となるキャラクターくらい描けるようなる❕という目標をたてました。(外部に頼るほうが時間的によいという考えもありますが。。)
液タブの購入・設置を妻と交渉(1番のハードル)し、無事クリア。練習をはじめました。
「言い訳をする前にまず努力」の初心も思い出すことが出来たし、何より新しい事への挑戦は楽しい😊