Unity千鳥足

Unity千鳥足

株式会社スライムスタイルのUnity備忘録

Amebaでブログを始めよう!
意外と情報が転がっていなかったので備忘録。

// Use this for initialization
void Start () {
        Dropdown drop =  this.GetComponent<Dropdown>();
        List<string> hoge = new List<string>();
        drop.ClearOptions();
        hoge.Add("aaaaaaaa");
        hoge.Add("bbbbbbbb");
        hoge.Add("cccccccc");
        hoge.Add("dddddddd");
        hoge.Add("eeeeeeee");
        drop.AddOptions(hoge);

    }

たったこれだけ、Spriteも設定したい場合は

public Sprite hogeSprite;
// Use this for initialization
void Start () {


        Sprite spriteData = hogeSprite;
        Dropdown drop = this.GetComponent<Dropdown>();
        List<Dropdown.OptionData> hoge = new List<Dropdown.OptionData>();
        drop.ClearOptions();
        hoge.Add(new Dropdown.OptionData("アメリカ",spriteData));
        hoge.Add(new Dropdown.OptionData("日本",spriteData));
        hoge.Add(new Dropdown.OptionData("ロシア",spriteData));
        hoge.Add(new Dropdown.OptionData("中国",spriteData));
        drop.AddOptions(hoge);

    }

これで設定できました


phalconフレームワークをCentOS6に突っ込んでみたので手順を備忘録。

■バージョンチェック
# php -v
PHP 5.6.12 (cli) (built: Aug  6 2015 17:14:56)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

■yumで必要なモノをインストール
# sudo yum install php-devel pcre-devel gcc make

■拡張モジュールの作成
# git clone --depth=1 git://github.com/phalcon/cphalcon.git
# cd cphalcon/build/
# sudo ./install

■/etc/php.d/phalcon.iniを作成してそこにextension追加
# vi /etc/php.d/phalcon.ini 
extension=phalcon.soとだけ書いて保存

■apache再起動
# /etc/init.d/httpd restart

■デベロッパーツールを導入、操作はまんま下記URLでいけます。(composer.json)はコピペして作ればOK
https://phalconphp.com/ja/download/tools

■ルートディレクトリ以下(私の場合は初期設定まんまなので/var/www/html)で空のプロジェクトを生成
# phalcon project phalcon-test

http://ipアドレス/phalcon-test/でブラウザからアクセスしてcongratulations!と表示されれば導入完了です。

ドキュメントが充実しているのとそこまで面倒な手順を踏まなくていいので楽ですね。

参考サイト
https://docs.phalconphp.com/ja/latest/reference/install.html
https://phalconphp.com/ja/download/tools


今回はUnity関係無い番外編です。
去年のファイルを漁っていたらDockerを導入したときに作った手順書が発掘されました。折角なので貼っておきますがもしかしたら動かないかも…大体こんな感じでやってましたぐらいの参考用に…

※2016/2/10加筆、修正を行いました。
 
環境
OS:centOS6
カーネル:3.19.3-1.el6.elrepo.x86_64(カーネル更新後)
root権限で作業を行いました。

インストール方法
■カーネルインストール
dockerはカーネルを3.8以上要求してくるので「uname -r」で確認。
centos6だとまず足りていないので更新
【1】EPELから3.xのカーネルを引っ張ってくる。
# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
# yum install --enablerepo=elrepo-kernel kernel-ml
【2】再起動してboot画面でカーネルを最新に変更
# uname -r 
3.19.3-1.el6.elrepo.x86_64
変更されているのを確認したら
# vi /etc/grub.conf
default=1 → default=0に変更
【3】デバイスマッパー更新
# yum update device-mapper

■dockerイントール
# rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
# yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum -y install docker-io
# service docker start
# chkconfig docker on

■dockerの動作確認でcentos6を起動
【1】dockerの公開されたリポジトリが提供しているcentosをpull
# docker pull centos
# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos                   latest              2b8d6139a545        6 days ago          226 MB
【2】取得したイメージからコンテナの起動
docker run -i -t centos /bin/bash
これで起動完了です。

おまけ
■個人リポジトリを立てて自分で作ったイメージを管理
【1】リポジトリを建てるホストでレジストリのイメージをpullして起動
# docker pull registry
【2】ホスト側のディレクトリをDocker Registryのデータディレクトリにmountして永続化
# docker run -d -p 5000:5000 -v /var/registry:/tmp/registry stackbrew/registry

■個人リポジトリへPUSH
【1】docker ps で現在起動しているコンテナIDを確認してcommit、今回はリポジトリがローカルにある想定
# docker commit コンテナID localhost:5000/centos
【2】ローカルリポジトリにpush
# docker push localhost:5000/centos
あとはyumでApache入れるなり好きにカスタマイズしてください。

■コンテナ内にこんな感じで起動shellをしこんで置かないとSQLとか起動しないので注意
#!/bin/sh
/etc/init.d/crond restart &&\
/etc/init.d/sshd restart &&\
/etc/init.d/php-fpm restart &&\
/etc/init.d/mysqld restart &&\
/etc/init.d/memcached restart &&\
/etc/init.d/nginx restart &&\
/bin/bash

# docker run -i -t centos:centos6 /path/to/上記シェル
で起動する。



Unity初めて数週間の時Inspectorにprivateな値やクラスの中の値が表示されなくて悩んでいた時期があったので解決法をペタっと、ただタグ貼るだけですね。


using UnityEngine;
using System;
public class HOGE : MonoBehaviour
    {
     [SerializeField] // ←これをつけると見えるようになる
        public bool exec_flag = false;
        [SerializeField]
        protected ResponseBase objData;
    }



    [Serializable] // ←クラスの場合はクラスの頭にもタグをつける
    public class ResponseBase
    {
        public string result_code;
        public string result_msg;
        public int result;
    }

非同期ロードは昔詰まった部分だったので抜粋してこちらに残しておきます。
なんで90%でasync.progressが止まるのかなぁと疑問だったのですがもしかして次のシーンに移った時点でシーン遷移処理完了=100%とみなしているのかなぁと勝手に推測して納得しました。
void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        // タッチしたらロード開始
        StartCoroutine("LoadNext");
    }
}




/// <summary>
/// 次のページを非同期ロードする
/// </summary>
/// <returns></returns>
IEnumerator LoadNext()
{
    // プレハブからインスタンスを生成(ローディングバーを生成)
    LoadSlider = Instantiate(Resources.Load("Prefab/LoadSlider")) as GameObject;
    GameObject canvas = GameObject.Find("Canvas") as GameObject;
    LoadSlider.transform.SetParent(canvas.transform,false);
    _slider = LoadSlider.GetComponent<Slider>();
    // 非同期でロード開始
    async = Application.LoadLevelAsync(next_scene);
    // 非同期読み込み中の処理
    while (async.progress < 0.9f) //0.9で止まってしまうため
    {
        Debug.Log(async.progress * 100 + "%");
        _slider.value = async.progress; //ローディングバーに読み込み率を渡す
        yield return null;
    }
    Debug.Log("Scene Loaded");
    _slider.value = 1f; //ローディングバーの読み込み率を100%にセット
    yield return async;
}

Unityでゲームを作るときはシーンを細かく分けたほうがいいのか全て1つのシーンで管理したほうがいいのかが良くわからない…大手のスマホゲーはどっちなんだろうなぁ…
スライムスタイル深澤です。
UNITYでHTML通信を行うときPOSTだと簡単にパラメータを付与できたのですがGET用のメソッドが見当たらなかったので簡単なものを作りました。備忘録的にここに残しておきます。

public string query_string = "?";


protected void _CreateString(Dictionary<string, object> DataList)
{
    int i = 0;
    foreach (KeyValuePair<string, object> data in DataList)
    {
        


        if (data.Value != null && data.Value.GetType().IsArray)
        {
            foreach (object temp in (Array)data.Value)
            {
                if(i != 0)
                {
                    query_string += "&";
                }
                query_string += data.Key + "[]" + "=" + temp;
            }


        }
        else
        {
            if (i != 0)
            {
                query_string += "&";
            }
            query_string += data.Key + "=" + data.Value;
        }
        i++;
    }
}
ただ文字を繋げまくってるシンプルな関数ですがあると便利です。
初めまして!
株式会社スライムスタイルのしんたと申します。

サーバーエンジニアを3年やってきましたが新しい分野にチャレンジしたいと考えUnityを触ってみる事になり。折角ですので苦労した事や発見した事を備忘録的に書かせてもらおうと思いブログを始めさせていただきました。

記念すべきブログの第一弾なのでとりあえず私の自己紹介を…

・専門卒→数カ月の高等遊民期間を経て今年社会人4年目を迎えるプログラマー
・ずっとPHPを業務で使用、エディタはphpStorm(超オススメです)。C,C++はプログラミング初心者の時に触りました。現在はC#をUnityで使っています。C#の機能多すぎて使い切れる気がしないです…でも楽しい!
・趣味はアメコミ(MARVEL)読書、最近一番面白かったのはトランスフォーマーのオールへイルメガトロン、翻訳されているので是非。
・老けてる(らしい)

Unityは始めたばかりのペーペーですので「えっこの程度で備忘録あげるんだ…」とか「こいつ情報間違ってるぜHAHAHA」という事があるかもしれないですが、もし間違えていた時は優しく教えて頂けると助かります。

皆さまよろしくお願いいたします!
トランスフォーマー:オール・ヘイル・メガトロン (ShoPro Books)/小学館集英社プロダクション
¥4,104
Amazon.co.jp