Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity】ISerializationCallbackReceiverを使いJsonUtilityでDictionaryを実現

Unity 2019.2.0f1 Personal(2019年8月)
UnityのJsonUtilityはほとんどの型をシリアル化できますが、
残念ながらDictionary型は対象外です。
が、ISerializationCallbackReceiverというインターフェイスを使うことで、
Dictionaryを実現することができます。

続きを読む

【Unity】JsonUtilityでJsonへシリアライズしたデータをローカルに保存する

Unity 2019.2.0f1 Personal(2019年8月)
今回はJsonテキストをローカルに保存していきます〜
JsonUtilityでクラスをJsonテキストに変換しローカルに保存したり、
逆に読み出して使用したりします。
※iOSやAndroidではなくUnity Editor環境での保存です。

続きを読む

【Unity】JsonUtilityを使ってデータを保存してみる

Unity 2019.2.0f1 Personal(2019年8月)
UnityではJsonUtilityというAPIを使い、
Json(データフォーマット)を扱うことが出来ます。
クラスなどデータのまとまりからJsonテキストへ変換(シリアライズ)したり、
逆にJsonテキストからクラスへ変換(デシリアライズ)したりできます。

続きを読む

【Unity】LINEっぽいチャットでScroll View チュートリアル③ChatController前編

Unity 2019.2.0f1 Personal(2019年8月)

前回の続きです〜
今回はチャットが動くようスクリプトを作成していきます。
Scroll ViewやAuto Layoutについては前回まででほぼ終わってしまいましたが…。
せっかくなのでちゃんと機能するところまで進めていきます〜

ChatController作成

CharSystem.csというスクリプトを作成し、
ChatSystemオブジェクトにつけましょう。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ChatSystem : MonoBehaviour
{
    private int id = 0;
    [SerializeField] InputField chatInputField;
    [SerializeField] GameObject chatNodePrefab;
    [SerializeField] GameObject content;


    void Start()
    {
    }

    public void OnClickMineButton()
    {
        CreateChatNode(ChatRoll.MINE);
    }

    public void OnClickOthersButton()
    {
        CreateChatNode(ChatRoll.OTHERS);
    }

    private void CreateChatNode(ChatRoll roll)
    {
        id++;
        string str = chatInputField.text;
        chatInputField.text = "";
        ChatData data = new ChatData(id, roll, str);
        Debug.Log("id:" + data.id + " roll:" + roll.ToString() + " body:" + str);
    }
}


public enum ChatRoll
{
    MINE,
    OTHERS,
}

public class ChatData
{
    public int id;
    public ChatRoll roll;
    public string body;

    public ChatData(int id, ChatRoll roll, string body)
    {
        this.id = id;
        this.roll = roll;
        this.body = body;
    }
}

ChatSystem.cs

InputFieldから文字入力をしButtonを押すと、
ChatDataクラスを生成してid, roll, bodyを保存するスクリプトです。

各種設定

まずは各メンバ変数をInspectorから設定します。
ChatNodePrefabには前回作成したPrefabを設定します。
f:id:hiyotama:20190822132011p:plain

続いてMineButtonのButton>OnClickにOnClickMineButtonを、
OthersButtonのButton>OnClickにOnClickOthersButtonを設定します。
f:id:hiyotama:20190822132305p:plain

最後にInput FieldのLine TypeをMulti Line Newlineに設定し、
日本語入力ができるようにします。
f:id:hiyotama:20190822132504p:plain

実行

「こんにちは」と入力してMINEボタンを、
「さようなら」と入力してOTHERSボタンを押しました。
f:id:hiyotama:20190822132744p:plain

次回はChatNodeを生成してChatDataのデータを流し込んでいきます。
というわけで今回はここまでです、ありがとうございました〜

【Unity】LINEっぽいチャットでScroll View チュートリアル②ChatNode作成

Unity 2019.2.0f1 Personal(2019年8月)

引き続きLINEっぽいチャットを作成していきます〜
今回はチャットのテキスト情報とアイコン画像をひとまとめにした
ChatNodeのPrefabを作成していきます!

続きを読む

【Unity】LINEっぽいチャットでScroll View チュートリアル①UIパーツ配置

Unity 2019.2.0f1 Personal(2019年8月)

Scroll ViewとLayout系コンポーネントについて調べてきました!
実際にモノを作成していく中で理解が進むことは多いので、
学んだことを応用してまずはLINEっぽいチャットシステムを作ってみたいと思います!

f:id:hiyotama:20190821190159p:plain
LINEっぽいチャット

続きを読む

【Unity】デバイスが縦長・横長の時に黒枠を表示させる。【Camera】

Unity 2019.2.0f1 Personal(2019年8月)

今回はUnityのCameraの値をいじって、
デバイスが縦長(iPhoneXなど)・横長(タブレットなど)の時に黒枠を表示させ、
いつでも16:9の画面を映し出すようにしていきます!

続きを読む

【Unity】端末画面サイズを取得する

Unity 2019.2.0f1 Personal(2019年8月)

スマートデバイスも様々な端末画面サイズがあり、
どの端末でもレイアウトが崩れないよう対応しなければなりません!
今回はひとまず端末画面サイズを取得する方法だけご紹介します〜

続きを読む