2018年12月7日金曜日

Unity モバイルアプリの軽量化

Unityで作成した3Dのアプリを、Android版にExportすると、実機で動かすとかなり重たくなる事があります。
そこで、Textureの軽量化をしてみようと思います。

Unityの画面で、Texturesフォルダを開いて、Texturesを一括選択します。




Max Size が2048になっているのを、1024にします。
Compression が、Low Qualityにします。

2018年11月30日金曜日

ProBuilder standard vertex shader bugs? というバグについて

ProBuilderが入ったプロジェクトをUnityでAndroid版をビルドしようとすると

Shader error in 'ProBuilder/Standard Vertex Color': '' : 'UNITY_PASS_FORWARDBASE' already defined at line 34 (on gles)
Shader error in 'ProBuilder/Standard Vertex Color': '' : 'UNITY_PASS_FORWARDADD' already defined at line 223 (on gles)
Shader error in 'ProBuilder/Standard Vertex Color': '' : 'UNITY_PASS_META' already defined at line 348 (on gles)

というエラーが出てしまいます。

こちらのサイトを参考にしました。

・ProBuilder standard vertex shader bugs?
https://www.reddit.com/r/Unity3D/comments/8zunaj/probuilder_standard_vertex_shader_bugs/

・About ProBuilder
https://docs.unity3d.com/Packages/com.unity.probuilder@3.0/manual/index.html


ProBuilderのバージョンを、2.9.8から3.0.9にバージョンアップすると直りました。

2018年11月19日月曜日

Unity 2018でArgumentExceptionが出る

Unity 2018.2.15f1を使用していて、ArgumentExceptionというエラーメッセージが出たので、他のブログサイトを参考に対処しました。











こちらのサイトから、VisualStudioCommunityを最新版の 15.9.1 に入れなおすと直りました。

2018年7月25日水曜日

Unity 2018でAndroidで実機デバッグする方法

これまで、Unityで作ったアプリをAndroidで実機デバッグするには、
Mono Developerを使っていました。
Unity2018以降は、Mono Developerが含まれていないので別の方法を使います。

・Android Studioを使用
Android Studioを立ちげて、USBケーブルでAndroidスマートフォンをつないでデバッグモードにします。
この状態で、Unityから、[File] -> [Build Settings]で、[Build And Run]を選択します。

これで、Android StudioのLogcat上に、アプリケーションのエラーなどが表示されます。
実機でエラーが発生する場合のデバッグなどに有効な方法ですね。

2018年7月24日火曜日

Unityで一定間隔で処理を実行する方法

タイマーを作るやり方

・Time.deltaTimeを使う
  Time.deltaTimeには前回のフレームからの経過時間が含まれています。
  Update()からの経過時間が取れます
 経過時間が一定時間を超えたら、処理を実行してタイマーをリセットする方法です。


public class Enemy : MonoBehaviour {

public float shotInterval = 1.0f; // 弾を発射する感覚
public float shotTime; // 最後に発射した時間

void Start() {
// 生成処理
}

void Update() {
if(shotTime > shotInterval) {
shotTime = 0.0f; // 発射間隔をリセット
Shot(); // 発射する処理
}
shotTime += Time.deltaTime;

}
}

2018年7月20日金曜日

UnityでCSVファイルを読み込む

UnityでCSVファイルを読み込む

アプリ内で使用するCSVファイルなどを、Unityで読み込む場合

・テキストファイルを、Resources以下に配置
  Assets/Resources/CSV/test.csv
・以下のようなスクリプトで読み込む

public class FileLoader: MonoBehaviour {

    public void Start() {

String fileName = "test.csv";
TextAsset csvFile = Resources.Load("CSV/" + fileName) as TextAsset;

StringReader reader = new StringReader(csvFile.text);

while(reader.Peek() > -1) {
string sLine = reader.ReadLine();
string[] values = sLine.Split(' ');
// ここに処理を書く
}
    }
}

Resources.Load でResourcesフォルダから、ファイルが読み込めるようですね。

2018年7月10日火曜日

Unityでデフォルトのエディタを変更する

1.メニューの「Edit」にある「Preference」を選択

2.「External Tools」タブを選び、「External Script Editor」を「Microsoft Visual Code」に変更

3.Preferenceウィンドウを閉じて、メニューの「Assets」から「Sync Monodevelop Project」を実行


これで、Unityのデフォルトのエディタが変更されました

2018年6月13日水曜日

1kgを切る13.3型 薄型ノートPC

最近は、第8世代 Corei5搭載で、SSDが512GBあって、重量が1㎏以下のノートパソコンが色々と出ています。


・HP ENVY13-ad (Core i5-8250U/メモリ8GB/SSD 512GB) 2YC81PA-AAAK
Core i5-8250U/8GB/512GB/13.3インチ液晶/USB Type-C 3.1×2/USB 3.1×2/1.24kg
クーポン使用で、119,980円から25,000円引きで、94,980円。
https://nttxstore.jp/_II_HP15924110

・ASUS ZenBook 13 UX331UAL UX331UAL-8250
Core i5-8250U/8GB/512GB/13.3インチ液晶/USB Type-C 3.1×1/USB 3.1×2/HDMI/985g
Kakaku.comで 129,859円
http://kakaku.com/item/K0001052876/

・Acer Swift5 SF514-52T-H58Y/B
約970gで14型フルHD液晶を搭載したモバイルノートパソコン
Core i5-8250U/8GB/512GB/14.0インチ液晶/USB Type-C 3.1×1/USB 3.0×2/HDMI/970g
Amazonで、137,234円
https://www.amazon.co.jp/dp/B079VR5B2Q

2018年6月12日火曜日

Unity Null Reference Exceptionとは

どのオブジェクトにも参照していない参照変数にアクセスしようとすると、NullReferenceExceptionが起こる。
NullReferenceException: Object reference not set to an instance of an object

実態がないオブジェクトにしないようにする必要があります。

(1)Nullチェックする

using UnityEngine;
using System.Collections;

public class Test: MonoBehaviour {

    void Start () {
        GameObject go = GameObject.Find("wibble");
        if (go) {
            Debug.Log(go.name);
        } else {
            Debug.Log("No game object called wibble found");
        }
    }
}


(2)Try/Catchを使う


Nullチェックか、Try/Catchをする必要があるようですね。

using UnityEngine;
using System;
using System.Collections;

public class Test2: MonoBehaviour {

    public Light myLight;

    void Start () {
        try {
            myLight.color = Color.yellow;
        }     
        catch (NullReferenceException ex) {
            Debug.Log("myLight was not set in the inspector");
        }
    }

}

2018年1月14日日曜日

Unity 2Dで画像をセットしてエラーが出た場合の対処法

・Only pot textures can be compressed to etc1 format
画像サイズが2のべき乗(2, 4, 8, 16, 32, 64, 128, 256,・・・)になっていないときに表示されます

・Only textures with width/height being multiple of 4 can be compressed to ETC2 format.

画像サイズが4の倍数(4, 8, 12, 16, 20・・・)なっていないときに表示されます