//tips
stage編集,Crownシーン遷移追加、BGM追加
//アプリ制作経緯
アバター交流が行えるSNSの作成計画の数値理解・把握のため。
計画数値は下記のように出している。
タスク分解とそれにかかる時間・担当を割り当て、アバター交流が行えるZEPETOを参考に、月給換算にすることで製作に関わるコスト(5090万円、簡易版3160万円)を算出した。
ただ、実際にコストは工期計画に基づき、仕入れである人件費に関わるため、先に計算した製作コスト以上にかかる。この計算は工程計画による。
さらに、資本回収の流れを図化し、最終収益に影響が大きい重要指標である
・広告クリック単価75円
・コンバージョン率15%
・定着率15%
・バイラル係数10%
・有料会員数3%
・解約率・チャーンレート5%
を変数として収益計画と資金繰り計画を組み立てた。
収益計画・資金繰り計画から、アクティブユーザー数を累積していく機能を持つバイラル係数の重要性とバイラル係数を活かすための早期広告宣伝費の大量投入が肝であることがわかった。
ここまでの計画の数値が現実に即したものかを理解するためにUnityを利用して、まずはゲームアプリ(1システム、1言語)のものを作成している。
現時点で分かったことは、タスク分解のプログラミングの時間配分は妥当またはもう少し減らすことができるかもしれないが、デザイン製作面は独自のエフェクトなどを多用するとさらに時間がかかることが予想されること。
バイラル係数は、リリース元のブランドにも影響するかと思うが、shareの数とアクティブユーザー増加数などを参考に理解を深めていこうと考えている。
数値はUnityのAnalyticsを使用し、収集予定。
リリース後は、複数システム、複数言語を使用するアバター運用SNSを作成する予定である。
//crownシーン接続
各stageselectsceneにcrownシーンへの接続ボタンを作成する。下記を各レベルのstageselectmanagerに追加し、ボタンに設定を行う。
public void CrownScene()
{
// ロード画面UIをアクティブにする
loadUI.SetActive(true);
// コルーチンを開始
StartCoroutine("Crownloading");
//SceneManager.LoadScene("TitleScene");
}
IEnumerator Crownloading()
{
// シーンの読み込みをする
async = SceneManager.LoadSceneAsync("Crown");
// 読み込みが終わるまで進捗状況をスライダーの値に反映させる
while (!async.isDone)
{
var progressVal = Mathf.Clamp01(async.progress / 0.9f);
slider.value = progressVal;
yield return null;
}
}
//プレイ画面のUIテキストの修正
プレイシーンのstageナンバーの表示と称号の表示に違和感を感じたので修正。
現在はクリアステージと最高位の称号を表示しているが、現在のプレイステージの情報と誤認しそうなので、ステージの情報はプレイステージの情報とし、称号のみを現在の最高位の称号を表示することにする。
nowlevelの変数を導入してUItextのスクリプトを下記のように変更。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class UItext : MonoBehaviour
{
[SerializeField] UnityEngine.UI.Text textbox;
public int playstage;
void Start()
{
//PlayerPrefs.DeleteAll();
int clearStageNo = PlayerPrefs.GetInt("CLEAR", 0); //どのステージまでクリアしているのかをロード(セーブされていなければ「0」)
int clearStageNohd = PlayerPrefs.GetInt("CLEARhd", 0);//lavelhard
int clearStageNohl = PlayerPrefs.GetInt("CLEARhl", 0);//lavelhell
int clearlevel = PlayerPrefs.GetInt("LEVEL", 0);
int nowlevel = PlayerPrefs.GetInt("nowLEVEL", 0);
int playstage = PlayerPrefs.GetInt("playstage", 1);//stageボタンクリックで認識ninposスクリプト
if (clearlevel == 0)
{
if (clearStageNo == 0)
{
textbox.text = "称号:" + "お使い" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNo == 1)
{
textbox.text = "称号:" + "お使い" + "\n" + "STAGE: " + nowlevel + " - "+ playstage;
}
if (clearStageNo == 2)
{
textbox.text = "称号:" + "タンポポ組" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNo == 3)
{
textbox.text = "称号:" + "1年1組" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNo == 4)
{
textbox.text = "称号:" + "学級委員" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNo == 5)
{
textbox.text = "称号:" + "生徒会長" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNo == 6)
{
textbox.text = "称号:" + "才能開花" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
}
if (clearlevel == 1)
{
if (clearStageNohd == 0)
{
textbox.text = "称号:" + "引きこもり" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohd == 1)
{
textbox.text = "称号:" + "忍者の卵" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohd == 2)
{
textbox.text = "称号:" + "忍者見習い" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohd == 3)
{
textbox.text = "称号:" + "下忍" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohd == 4)
{
textbox.text = "称号:" + "中忍" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohd == 5)
{
textbox.text = "称号:" + "上忍" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohd == 6)
{
textbox.text = "称号:" + "頭領" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
}
if (clearlevel == 2)
{
if (clearStageNohl == 0)
{
textbox.text = "称号:" + "変質者" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohl == 1)
{
textbox.text = "称号:" + "求道者" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohl == 2)
{
textbox.text = "称号:" + "勇者" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohl == 3)
{
textbox.text = "称号:" + "怪物" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohl == 4)
{
textbox.text = "称号:" + "修羅" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohl == 5)
{
textbox.text = "称号:" + "亜神" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
if (clearStageNohl == 6)
{
textbox.text = "称号:" + "神の系列" + "\n" + "STAGE: " + nowlevel + " - " + playstage;
}
}
}
}