OK_NO NO NIKKI

OK_NOの日々を日記に起こしました

Unityの初心者でも中級者の話を聞けるようになりたい② - コンポーネント編

はじめに

初めに、

このブログはUnityの初心者or挫折者が中級者になるための筋道を見つけるためのブログです。

中級者:

  • 「ポスプロ焚いたんだけど、見た目よくならないんだよねぇ、、、」
  • 「自分で作ったクラスをシリアライズフィールド化するのってどうすればいいんだっけ?」
  • 「コルーチン便利すぎワロタ」

 

今回は↑の中級者(?)の話が分からないというか、どう調べたらついていけるの??って人向けのブログです。

というか、この会話はどちらかというと中級者になるための会話、みたいな感じです

自分もまだ、中級者に足を突っ込もうとしている最中なので、間違ってたらすみません…

 

でも、少なからず、「Unityの教科書は読んだけど、そのあとどうするの??」とか

「問題が起きてることはわかるんだけど、どう調べたらいいか、どう解決するのかわからない」とかって方はいると思います。

 

今回はその方々の悩みを解決するためのブログです。

あ、間違ってたら即教えてほしいですよろしくです。

 

 

 

コンポーネント

調べるって言っても、やっぱり知識は必要です。

まずは、ざっくりですが、「Unity内でよく見かける標準コンポーネント」をおさらいしましょう

コンポーネントは、簡単にいうと、ゲームオブジェクトにアタッチ可能なクラスです。

多分定義は全然違いますが、とりあえずこう考えておいてもらっていいと思います。

 

そして、

「正直、ゲームオブジェクト作ったけど、元からついてるコンポーネントとか良くわかんネ。なんやこれ。」

ってなってませんか?

 

そんなあなたのために、うっす~~~~~~~~く各コンポーネントを紹介します。

間違ってたらすまそ

 

Transform

これは超大雑把にいうと「位置・角度・大きさ・親子関係」をつかさどるコンポーネントです。

Position・Rotation・Scaleですね。あとParent。

ん?Parentってなんだっけってなってる方、居るかもですね。

Parentはヒエラルキービューで見れるやつですね。

ここでいうと、Canvasがその下のmode selectionからText(TMP)までの

「親」です。

逆に、Canvasの子はmode selectionからText(TMP)までのすべての要素です。

 

親子関係

親子関係は、

Transform的なつながりを非常に色濃く持ちます。

今のCanvasはちょっと例外としてとりま飛ばして、

以下のSunとEarthで考えてみましょう。

 

でかい親のほうがSun、小さい子がEarthだとします。

この場合、SceneビューからSunの座標を変えると、

こんな感じで、Earthも一緒についてきます。

 

回転も同様、Sunのほうの回転だけ回転させたいのに、Earthがついてきやがります。

みたいな感じで、親子関係には位置、角度、大きさの結びつきがあります。

でも、内部的にはどう動いてるんでしょうか

 

答えは単純で、

EarthはSunを基準として、Transformの位置を設定しているんです。

 

まずはWorld座標系(普通の座標系)を確認しましょう。

とりあえず、地球も太陽もワールド座標系を示してます。

この図はまぁわかると思います。

次は太陽を基準とした地球の座標を示します。(太陽座標基準のローカル座標系)

わかりづらいとは思いますが、太陽の座標から考えてみると、わかりやすいかもしれません。

簡単にいうと、(0,0,0)という基準点が太陽にある。みたいなものです。

なので、太陽基準のローカル視点から世界の始点を見ると、(0,0,0)にはなっていないんですね。

 

 

ざっくりいうと、これが親子関係です。

角度も、大きさも、これと同様です。親が基準となって作用します。

 

めんどくさいのは、インスペクタービューのEarthのTransformの値は、太陽基準のローカル座標系なのです。

だから、世界の始点の場所に強制的に移そうと(0,0,0)を指定しても、うまくいかなかったりします。

そこでUnityでは、

transform内の関数として、LocalPositionとWorldPositionがあります。Localは自分の親を基準として、Worldは世界を基準としてます。

と、そんな感じで、親子関係はTransformに深~く深くかかわっています。

Transformでの移動などがうまくいかないときは、親子関係を探ったり、LocalかWorldかを知らべてみてください。

 

 

 

ん?

太陽だけを自転させたい???

いい質問するな~↑↑

めんどくさいのでざっくり言いますが、

親子関係を見直しましょう。Create EmptyでSolarSystemを作り、先ほどのSunとEarthをこのようにおいてあげましょう。

SunとEarthの親はSolarSystemで同一です。(SolarSystemはたしか訳:太陽系のはず)

これで、Sunのローカル座標を0,0,0にしてあげれば、太陽だけ自転できます。

 

ってな感じで、Transformでした。

位置と角度と大きさと親子関係、です。

ほかにも要素はありますが、興味があれば「Unity Transform できること」みたいな感じで調べてみましょう。

 

Mesh Filter

Cube(Mesh Filter)みたいな感じで表記されてると思います。

もしかしたら、Cubeの部分は違うかもですね。

簡単にいうと、ゲームオブジェクトのモデルの形です。

ぶっちゃけ使わないですね。というか、あんまり自分は使ったことないです。

ただ、「モデルが正しくないな」と感じたら、ここを疑ってもいいかもですね。

 

 

参考:さまざまなゲームオブジェクト(3/5):初心者のためのUnity超入門 - libro

 

Mesh Renderer

こちらはレンダラー、つまりゲームオブジェクトの描画周りを設定するコンポーネントです。

上のMesh Filterのモデル形状と、アタッチされているマテリアル、などから自分の描画の設定を行います。

描画周り、と考えましょう。

 

Collider

コライダーは「あたり判定」です。

実はコライダーのコンポーネントには種類があり、MeshCollider、SphereCollider、BoxColliderなどがあります。

色々ありますが、先ず、モデルの形を正確に反映させたMeshColliderが一番重いです。

 

これはコライダーの内部を考えると楽です。


例えば、SphereCollider同士の接触判定には、2つの円の中心の座標の距離が2つの円の半径の合計より近ければ重なっている、イコールなら接触、離れていれば接触していない状態となります。

 

 

また、Boxに関して考えると、それぞれ8点の頂点があり、そこから割り出して考えることができます。

 

 

Boxと同様にMeshColliderを考えると、モデルの頂点数分、判定して考えてあげないといけません。

例えば、StandardAssets内のボール転がしゲーム用のPrefab「RollerBall」では、頂点の数が5177個あります。(Verticles:5177)

どう考えても、SphereColliderで処理したほうが軽い処理ができそうですね。

なので、こちらではSphereColliderを使用します。

 

しかし、場面によっては正確なあたり判定の処理が必要な場合もあります。

そんなときはMeshColliderを使用しましょう。

 

 

 


※ちなみに、こういったMesh(モデル)についての画面はMesh Filter内のアタッチされたモデルをクリックすると、プロジェクトビューでハイライトされます。

 

ColliderとTrigger

コライダーの種類には、もう一つ、トリガーというものがあります。

コライダーは主に接触・衝突判定に使用されますが、

トリガーは重複判定に使用されます。

 

重複とは、文字どおり、重なっているかどうかを判定するものです。

例えば、ゲーム内で水の中に入ったら、泳いでるアニメーションに変えたいとします。

普通に

if(y < waterLevel)

みたいに設定するのもいいですが、ここからここまでが水だよ~ってUnityEditor上から示すことができたら便利ですよね

 

そういう時に使えるのが「トリガー」です。

先ほど説明したコライダーを水中全域に張り巡らせて、この中に入ったら水中!

としてあげます。

設定方法などは下記をご覧ください。

 

ColliderとTriggerについて

【Unity】当たり判定を一通り!OnTrigger・OnCollisionをひとまとめ | 侍エンジニアブログ

 

Camera

カメラはUnityの世界を切り取り、Gameビューあるいはビルドした画面などに出力するためのコンポーネントです。

詳しくはレンダリングの知識がしっかり必要となるので詳しくは話しませんが、

GameViewにおいて、全体的なレンダリングの改善、変更をしたい場合はこのコンポーネントをいじるとうまくいったりします。

 

詳しく知りたい場合は「Unity Camera できること」「Unity Camera 基礎」で検索してみましょう。

 

Light

ライトはシーン上を照らすライトを設定するコンポーネントです。

Lightコンポーネントを導入することで、特定のゲームオブジェクトのレンダラーコンポーネントに影響を与えます。

 

例えば、TypeをPointにすると、コンポーネントを持つゲームオブジェクトの付近のゲームオブジェクトのレンダラーに光の情報を与えます。

そうすると、レンダラーは受け取った光の情報をもとに計算を行い、自分の色を導きます。

この部分については私は不正確なため、あくまでたとえとして受け取ってください。

しかし、このようにレンダラー、レンダリングに深く作用するため、基本的には重たいです。

 

なので、軽量化の要素が多く設けられており、Render Modeから影について設定することができ、Culling Maskを用いて光の情報を与えない設定を選択できます。

AudioListener

ヒエラルキービューからCameraをつくるとカメラのゲームオブジェクトに勝手についてきて、Scene内に複数あると、このコメントが毎フレームずっと表示されてしまう。忌々しいアレです。

 

オーディオリスナーの考え方は簡単で、音楽を聴くための耳の位置です。

人間であれば、目(Camera)の近くに耳(Audio Listener)があるので、同一のゲームオブジェクトに勝手に配置されます。

基本的には、耳の位置による音の変化は後述のAudioSourceが3Dでないと効力を持たないです。

 

AudioSource

AudioSourceは音を鳴らすコンポーネントです。

アタッチされたAudioClip(音源)を鳴らします。

PlayOnAwakeでは、シーンが読み込まれた瞬間に音が鳴り

LoopではBGMのようにループ再生を行い

Spacial Blendを使うことで、発音するゲームオブジェクトとリスナーと位置による変化がない2Dと、変化がある3Dを設定することができます。

Rigidbody

リジッドボディは物理挙動を行うコンポーネントです。

コライダーを使用し、物理挙動を計算したのち、Transformの座標と回転に反映します。

リジッドボディには質量、摩擦係数、重力の有無などがあります。

 

また、Constraintsでは「物理挙動は行うが、回転を制限する」なんてことができたり、

物理挙動が聞かない座標軸を設定できます。

例えばFPSゲームで坂を上らせると毎回プレイヤーが傾いてしまったりとか、めんどくさすぎですよね。あとは2Dアクションゲーム作ったのに、物理挙動のせいで奥行きがずれちゃったりとか、

ある一定の部分だけは物理挙動を行わせたい、なんて時に便利です。

 

 

また、Unityの内部的にはFixedUpdateと同タイミングでRigidBody系統の物理挙動処理を行います。

理由はFixedUpdate自体が、物理挙動用のUpdateだからです。

一応、ここ重要なので、ふわっとでも覚えておいてください。

Canvas

キャンバスコンポーネントはUI系のコンポーネントを持つすべてのゲームオブジェクトの親オブジェクトとして存在しています。

RenderModeから、GameView上のどの部分に描画を行うか、Order in Layerでどの順番で描画するかなど、UI部全体のGameView用の描画設定を行います。

 

キャンバスを出すと色々ほかのコンポーネントも生まれますが、自分もあまりよく知らないです(汗)

RectTransform(下書き中)

レクトトランスフォームコンポーネントCanvas内部でのTransformを行いやすくするためのコンポーネントです。

こちら下書き(参考は↓より考え中)

 

参考:

【Unity】これだけは覚えておきたいRectTransformの基本 - おもちゃラボ

【Unity】図解でわかるRectTransformのアンカーとピボット | アトリエ・クラフトロン

UnityでRectTransform配下での子オブジェクトの生成/破棄を行う - MRが楽しい

Text

TextはUI上で文字を表示する場合に使用します。

ちなみに、Textは最新のUnityでは非推奨で、ヒエラルキー上で作成する場合はLagacy→Textと設定します。

 

また、UI系のクラスをScript内て扱う場合は、

「using UnityEngine.UI;」

をつけることを忘れないようにしましょう。

 

あと、Textコンポーネント内の文字はtextという変数にあります。

要素textの型がStringクラスなのネーミングセンス最悪ですよね…

Text.textはStringて…

 

間違えないようにですね…

TMP - TextMeshPro

TMP(TextMeshPro)コンポーネントでは上記Textコンポーネントでは使用できない、様々な追加要素を加えたTextの進化系です。

僕はあまり詳しくないので、説明はパスさせていただきますが、一つ注意点として、

TMPはスクリプト上で扱うためには「using TMPro;」を行う必要があり、

さらにTMPのクラスは「TextMeshProUGUI」となります。

これが結構知らないと厄介な部分なので、こんなこと言ってたなぁ、程度に覚えておいて下さい。

 

 

参考:

UnityのTextMesh Proをマスターする(1/3) - 51N1

【Unity C#】TextMeshProをスクリプトで表示 - プログラミング教室 フタバゼミ

 

 

まとめ

今回はUnityのコンポーネントについてまとめてみました。

こういうコンポーネントの知識って、入門書に詳しく書いてないわりに、中級者になるためには必須条件の知識だったりするんですよね。自分も未だ全然詳しくないですが、とりあえず何か作ってみようとすると、その過程で結局調べることになったりします。

お疲れさまでした。

 

次回

次回は、3DCG全般の理解になります。何故重たくて、何故Shaderというものが使われるのかレンダリング?マテリアル?とは

続きが気になる方はこちら

Unityの初心者でも中級者の話を聞けるようになりたい① - 導入編

はじめに

初めに、

このブログはUnityの初心者or挫折者が中級者になるための筋道を見つけるためのブログです。

中級者:

  • 「ポスプロ焚いたんだけど、見た目よくならないんだよねぇ、、、」
  • 「自分で作ったクラスをシリアライズフィールド化するのってどうすればいいんだっけ?」
  • 「コルーチン便利すぎワロタ」

 

今回は↑の中級者(?)の話が分からないというか、どう調べたらついていけるの??って人向けのブログです。

というか、この会話はどちらかというと中級者になるための会話、みたいな感じです

自分もまだ、中級者に足を突っ込もうとしている最中なので、間違ってたらすみません…

 

でも、少なからず、「Unityの教科書は読んだけど、そのあとどうするの??」とか

「問題が起きてることはわかるんだけど、どう調べたらいいか、どう解決するのかわからない」とかって方はいると思います。

 

今回はその方々の悩みを解決するためのブログです。

あ、間違ってたら即教えてほしいですよろしくです。

 

今回の主なターゲット層

今回の主なターゲット層は、入門書は一通りやってみた(全部完璧に理解ってわけじゃなくても)けど、

  • 今後どうしたらいいかわからない
  • アセットをとりあえず入れてみたけどエラーが呼ばれてどうしようもない
  • 次に勉強するべき先が見つからない
  • やりたいことができないけど、そもそもなんでできないかよくわからない

という方向けです。

Unity全くの未経験の初学者の方は、とりあえず「Unityの教科書」を学ぶことをお勧めします。↓

Unityの教科書:アマゾン

 

その際、Standard Assets関係で何かが起こった際は、下記を参照ください

「Standard Assets」がダウンロードできない場合の対応方法 | SBクリエイティブ

Unity 2019.3でのStandard Assetsのエラーへの対処方法 | SBクリエイティブ

 

 

ということで、これからはUnityの入門書を読んだ体で、話を進めていきます。(筆者はUnityの教科書ベースです)

 

 

重要な考え方 - トラブルシューティングのエイムを合わせる方法

Unityの初学者として、自分がぶち当たった壁は、Unity内の要素が多すぎて、先ず何すればええんやってなったことです。

あとは、エラーが出ても、どこでエラーが出てるのか、何が問題なのか、を見つけるのが億劫すぎて結局進みが悪いというところです。

まずはここから改善していきましょう。Unityは色々な技術の集合体ですが、一つ一つの技術を順番に理解していくと以外と視野が広がってきて楽です。

わからない部分があってもとりあえずは飛ばして、その部分以外がわかるようになれば、少なくとも前よりわかる場所が増えるので、その部分のトラブルシューティングは楽になるかもしれません。

気楽にいきましょう

 

めんどくさい複雑な要素・形式は大体、軽量化かパソコン都合のせいで起きてる

あくまで自分の中のちっぽけな経験則ですが、

Unityで起きたエラーや、複雑なわけわからんシステムは

この二つの要素のために起きていることが多いです。

 

パソコン都合は、ここでは

「PCが処理するうえで処理が楽になるからそうなっていること」

ということです。

たとえば、コンピューターは基本的な計算の多くを2進数によって管理しています。

それによることで、小数点以降に不備が出てしまったりなんてことがあったりするのですが、コンピュータ側からすると、結構好都合なんですよね。

多分、ほかにわかりやすい言葉が有るんですが、フィーリングで察していただければと思います。ゴメンネ。

 

軽量化は、ここでは

「PCが処理するうえで、こっちのほうが軽量になるから、処理が早くて軽いゲームになる」

ということです。

ゲームは基本的には、重たい処理を嫌う性質があるので、この部分も重要です。

例えば映画用のCG・物理処理は、一つのフレーム(画像)を作るのにかなりな時間をかけてよりリアルな絵にして出力したりするのですが、

ゲーム用の処理は一つのフレームを作るのには1/30秒以下でないと許されないので、元々時間がかかるCGの処理などの部分で軽量化を行っています。

 

という感じです。

エラーが出てきたり、新たな要素を学んでいるときには、PC側の気持ちを考えながら理解しようとすると、「なるほどなああ、めんどくさ」ってなりやすいのでおすすめです。

個人的には複雑な処理が増えるのは「軽量化」によるもののほうが多いと感じています。

 

問題の調べ方

問題の調べ方は、結構初学者にとって難しいと思います。

エラー文そのままコピーしてもわけわからん「stack overflow」みたいなサイトに飛ばされて、英語だし、翻訳しても誤訳おおいし、解決してない。アンサーに書いてあるURLでも解決してないやん。てかそもそも全然関係ないこと書いてあるし、なんこれ

ってなってることもしばしば。

まだ自分もそういうこと多いので、中級者とは名乗れないんですよね。はは

 

という感じで、じゃあ結局なんて調べたらよかったんだろう。となるときに

もっと早く問題を把握できるようにしましょう。

 

問題の検索が早く終わる方法は大別すると、以下の要素があります

  • Unityについて、内部の動きや概要を知っている
  • 経験に基づいて早い検索ができる
  • 問題の細分化がうまお

いや、ムズイすよね。

でも、「問題の細分化がうまお」の部分なら、他と比べて簡単に上達できるかもしれません。

 

例えば

「ゲームオブジェクトにマテリアルをアタッチしたけど、まっピンク色になっちゃって、どうしようもない場合」

この時には

「マテリアル 色 おかしい」

よりも

「マテリアル ピンク色 おかしい」

と調べたほうがうまくいきます。

 

なので、問題は細分化しておいたほうがいいのです。

この場合だと、色を指定することで細分化できましたが、もっともっともっと細分化しなければ自分と同じ問題にたどり着かない場合もあります。

普段から気を付けろ!って言えるほど自分もできていないので、

「なんか自分のバグのトラブルシューティングが出てこないなあ」ってなったときはこれをやってみてください。

 

例えばですが、Unityが立ち上がらなくなってしまった場合も

「Unity 立ち上がらない」

よりも

「Unity 立ち上がらない win10 更新後」

「Unity 2020.1.3f 立ち上がらない」

とかのほうがうまくいく可能性もあります。

まずは自分の置かれている状況とエラーが起きる条件を確認しましょう。

 

ちなみに「解決法がインターネットに全く乗ってない」って場合もあります。

そんなときは深く考えすぎずに、近くに仲間がいたら聞くとか、Twitterでエラーに対してつぶやくとかは、やってみていいかもです。

 

おすすめのエディター

宣伝です。

Jet Brains Riderは最強です。

とにかく、おすすめです。

使えばわかります。

 

Riderは学生は教育用の使用は基本無料で、候補や校閲機能がすげぇコードエディターです。C#を書くときにいちいち「void OnCollisionEnter()」とか書かなくても、「void OnCo」ぐらいで候補がでてくれます。

クソみたいなスペルミスが減って開発効率も上がります。

あと、つよつよなUnity戦士の方々にバグがでたときに

「なんでVSCodeの予測も何もないもの使ってるん???」って言われなくて済みます。

 

ちなみにおすすめしてるだけなので、こだわりがある方とかは全然飛ばしてOKです。

というか、Visual StudioVS Codeも予測変換はあります。

なので、あくまでおすすめとして、とらえてもらえればと思います。

 

www.hanachiru-blog.com

 

 

Riderの機能がうまく使えてないな…と思ったらこちら

Unity 開発者向け Visual Studio からの Rider 乗り換え案内

 

 

次回

次回は「コンポーネント」についてのおさらい、総復習になります。

興味のある方はこちら

UnityでGooglePlayに自分のゲームをのせるまで

今回は初作品であるTraversal(トラバーサル)をGooglePlayに公開した経緯や流れ、苦労したことについてのお話を書いていきます。

文才がなくて本当に申し訳ないですが、読んでいってもらえると嬉しいです!

 

 

Unityでゲームを製作開始!

大学入って初めての夏頃、サークルの仲間と共にチーム開発*1を初め、本格的にUnityを学び始めました。

 

実はUnityには何度も挑戦していたのですが、その度に挫折をしていました。(正直Unityは一人じゃ永遠に習得できなかったかも)

 ですが、ありがたいことにチーム開発のお陰で嫌でも習得しなければならない状態となりました。

Unityを始めたての頃でしたので、Unityでしか作れないゲーム(当時はそう思っていましたが)を作ろうと思いました。

当時は自分のゲームはPC以外のプレイが出来なかったので、スマホゲームと、Unityならではといったら3Dだと思い、3Dのスマホゲームを作成することに決めました。

 

初めてのゲーム制作において重要なこと

まず初めに、私は他言語でゲームやシステムなどを作っていて多少のゲーム制作への前提知識はあったのですが、始めたての言語でゲーム制作を始めるにあたってとても重要なことを一つ忘れていました。

それは初めて作るゲームは簡易なものにしなければならないということです。

Unityに皆さんが挑むきっかけは色々だと思いますが、初めに作るゲームを大規模ゲームにはしないことです。

これは重要だと自分は思っているのですが、意外と知られていないことでもあると思っています。自分も元々は大規模ゲームを制作しようとしていましたが、チーム開発のリーダーに言われこれに気づくことが出来ました。

なので今回制作したゲーム(Traversal)に難しいプログラミングや、機構は組み込まれていません。(例 アナログスティック風ボタンや必殺技など)

f:id:OK_NO:20200521173033j:plain

基本操作用のボタンは一つだけのゲームにしています

是非これだけは忘れないようにしてもらえたらこの記事を書いた甲斐があるほどです。

 

仲間、コミュニティを持つこと

これはチーム開発で感じたことで、もしかしたら必要のない方も大勢いるかもしれませんが、自分には仲間がいたからこそこのゲームは完成したと思っています。励ましの言葉や、トラブル解決策を教えてもらったり、GooglePlay関係のこともすべて仲間から教えてもらうことが出来ました。

ですので、何かのコミュニティを持つことは重要だと思います。

今コミュニティが全くない状態でしたら、私のtwitterアカウントなどでしたら気軽にDM(ダイレクトメール)していただければできる限りですがお力になろうと思っています。

 

Unity初心者の方へ

企業案件でも何でもないのですが自分がUnityを習得するにあたって大変勉強になった本がありますので、こちらを紹介させていただきます!

Unityの教科書 Unity2019完全対応版|SBクリエイティブ

あと、これも大変重要なことですが、Unityでは入門書を理解して実際にプログラミングできるようになったとしても、インターネットなしでは恐らくあなたはゲームを一人で制作はできません。自分もまだそうです。

入門書などを読んでもUnityという言語は非常に多岐な機能があるため、あなたが作りたい機能のすべてが入門書には凝縮できないのです。

なので、新たな機能をUnityで勉強したいときはインターネットを活用することをお勧めします。

例えばUIボタン画像にしたいときは「unity UI ボタン 画像」などと検索すればおそらく求めている情報を手に入れられるはずです。

ここでもう一つ重要なことは、インターネットを用いて得た情報において何かを行うことは自己責任だと思ってください。この記事も例外ではありません。

 

GooglePlayでゲームを公開するまで

実はこのゲームはゲーム制作期間より、ストアに公開するまでの手順のほうが4倍くらい長い期間を使っています。それも自分は幸せなことにGooglePlayに一度ゲームを投稿したことがある方から手厚いアドバイスをもらうことが出来ました。

 

スマホゲームの実機テストは面倒

本当に面倒です。作成したゲームをスマートフォンに送信するときに、いちいちUSBの有線接続で行う必要があり、スマートフォン側で毎回行わなければならないこともありました。

ただ挫折はしない程度なので問題ないと思います。

 

署名付きビルド

こちらはunity側の問題なのですが、ストアにアップするためにはまずビルドの前に署名(作った人間の証明)をする必要があります。

こちらは署名やセッティングが変わると毎回更新せねばならず、いろいろとおっくうです。

署名ありビルドについて学ばせていただいたぺーじです

light11.hatenadiary.com

GooglePlayConsoleアカウントを作成

googlePlayにゲームを登録したい場合は有償のgoogle play console アカウントが必要になります。

2500円くらいだったかな…詳しいことは調べれば出てきますがクレジットカード登録が必要なのでまぁまぁ面倒でした。

 

GooglePlayConsoleについて学ばせていただいたページです

akira-watson.com

Googleによる審査とUnity側の問題

ここが一番のネックでした…

もうかなり長い間触れてないので忘れてしまいましたが、unityにはスマホアプリにするためには圧縮しなければならず、その方法を簡単にするためのツールを持っていなかったのでまずそのツールのダウンロードをしたのですが、最新版が自分のunityのバージョンと会っていなかったのでやり直し…またやり直し…

一番のつらいところはゲームを作る楽しさ、プログラミングの時の楽しさなどが全くないことでした。とりあえずネットに乗っているものから順にやってみてこれがだめならこれはどう?など色々試してようやく2-3週間後に終わりました(途中やる気がなくなってたのでこの長さの期間ですが本気でやれば3日くらいでできたかもしれないです)

公開してからの広告方法

自分はとにかくこのゲームを広める方法を知らなかったので友達に勧められた進捗をつぶやくtwitterアカウント*2を作り、ツイートしてみました。

その中の人々の何人かがダウンロードしてくれたらしく、累計ダウンロード数は20を突破しました!(自分では結構多い数字だと思っています。)

f:id:OK_NO:20200521172448p:plain

実際の開発者用画面からとってきました

ですが基本ツイッタラーの皆さんはURLを踏んで別の場所に来ることがないのでまずは動画や画像などで開発状況などをツイートしていって、そのあと満を持して公開することをお勧めします。

最後に

とっても長い道のりでしたが無事ゲームは公開するに至り、多くの方に触れてもらえる機会を生むことが出来ました!

f:id:OK_NO:20200521173214j:plain

結構いい感じのゲーム構造になったので、今後ちゃんとしたモデルやエフェクトを追加してもっと皆さんに遊んでもらえるようなゲームに仕上げたいと思っています!

このゲームをプレイしてくれた方、励ましてくださった方、googlePlayの公開方法を教えてくれた方などに感謝しています!

もちろんこの記事を読んでくれた方にも感謝です!

この機会にぜひ自作ゲームを公開してみてはいかがでしょうか?

…ネガティブなことを言ってきましたが、今になってみると自分はいい経験をさせてもらったと思っています。なので挑戦することは悪いことではないと思いますが、ゲームを作ってストアにアップしたいという方は自分のようにgooglePlay(もしくは他のストア)に作品を出している方などに協力をしてもらうことをお勧めします。

今後はゲームに広告などを付けたものなども制作予定ですが、それもまた相当に難しいらしいので完成したらまたここで詳細をお話ししようと思います。

 

それではまた!

*1:現在も活動中!チームの公式アカウントです https://twitter.com/Snym_Games

*2:https://twitter.com/OKNO38934114

免責事項

OK_NO NO NIKKI (https://ok-no.hateblo.jp/)(以下、「当サイト」とします。)における免責事項は、下記の通りです。

 

コメントについて

公序良俗に反し、または管理人によって承認すべきでないと認められるコメントは、当サイトの管理人の総量によって承認せず、削除することがあります。

 

当サイトの正確性について

当サイトのコンテンツや情報において、可能な限り正確な情報を掲載するよう努めています。しかし、誤情報が入り込んだり、情報が古くなる可能性があります。必ずしも正確性を保証するものではありません。また合法性や安定性なども保証しません。

 

障害等の責任について

当サイトに掲載された情報によって生じた損害等の一切の責任を負いかねますのでご了承ください。

また当サイトからリンクやバナーなどによって移動された場合、移動先サイトで提供される情報、サービス等についての一切の責任も負いません。

当サイトの保守、火災、停電、その他の自然災害、ウィルスや第三者の妨害等行為による不可抗力によって、当サイトによるサービスが停止したことに起因して利用者に生じた損害についても、何ら責任を負うものではありません。

当サイトを利用する場合は、自己責任で行う必要があります。

 

当サイトで掲載している画像の著作権や肖像権等について

当サイトで掲載している画像の著作権や肖像権等は、各権利所有者に帰属します。万が一問題がある場合は、お問い合わせよりご連絡いただけますよう宜しくお願い致します。

 

無断転載の禁止について

当サイトに存在する、文章や画像、動画等の著作物の情報を無断転載することを禁止します。引用の範囲を超えるものについては、法的処置を行います。転載する際には、お問い合わせよりご連絡いただけますよう宜しくお願い致します。