UnityEditor2018 ビルドスクリプト

Editorフォルダをとスクリプトファイルの作成

Step1
Assetsフォルダ内にEditorフォルダを作成します。
f:id:MATCHA05:20180616132801p:plain
Step2
作成したフォルダ内にスクリプトファイルを作成します。
f:id:MATCHA05:20180616133506p:plain

なぜこの手順を行ったかというと、
Editorフォルダ内のファイルはエディタースクリプトとして扱われるので、
ビルドしたゲーム内にエディタースクリプトが含まれなくなります。

作成したスクリプトファイルにビルドスクリプトを実装

using UnityEditor;
using System.IO;
using UnityEngine;
using UnityEditor.Build.Reporting;

public class MatchaBlogBuild
{
    private static readonly string OUTPUT_BASE_PATH = Directory.GetCurrentDirectory() + @"\Output\";

    [MenuItem("MatchaBlog/WindowsBuilds")]
    public static void WindowsStandaloneBuild()
    {
        BuildReport report = BuildPipeline.BuildPlayer(GetScenesPaths(), OUTPUT_BASE_PATH + @"\MatchaBlog.exe", BuildTarget.StandaloneWindows, BuildOptions.None);

        if (report.summary.result == BuildResult.Succeeded)
        {
            Debug.Log("======== Build Done! ========");
        }
        else if (report.summary.result == BuildResult.Failed)
        {
            foreach (var step in report.steps)
            {
                Debug.Log(step.messages);
            }
        }
    }

    private static string[] GetScenesPaths()
    {
        string[] scenes = new string[EditorBuildSettings.scenes.Length];
        for (int i = 0; i < scenes.Length; i++)
        {
            scenes[i] = EditorBuildSettings.scenes[i].path;
        }
        return scenes;
    }
}

ビルドを実行する

UnityEditor上部のメニューから、Matchablog>WindowsBuildsメニューが作成されているので、クリックするとビルド処理が実行されます。

まとめ

BuildPipeline.BuildPlayerの処理の前と後に処理を追加することで、
ビルド前イベントとビルド後イベントを実現することができる

/*
ビルド前イベント
*/
  BuildReport report = BuildPipeline.BuildPlayer(GetScenesPaths(), OUTPUT_BASE_PATH + @"\MatchaBlog.exe", BuildTarget.StandaloneWindows, BuildOptions.None);
/*
ビルド後イベント
*/

古いバージョンではBuildPipeline.BuildPlayerの戻り値がstring[]なので、
古いバージョンで実装する場合は注意

Visual Studio でデバッカーがアタッチできない問題

環境

UnityEditor2018

Visual Studio Version 2017

 

問題

- VisualStudio2017でデバッカーにアタッチできなくなる

__再現手順__

__Step1.__ VisualStudioを開く

__Step2.__ Menu > デバッグ > Unityデバッガーのアタッチ

ここで、本来ならばデバッグモード状態になるはずが、デバックモードがすぐ終了してしまう

 

解決策

__Step.1__ UnityProjectのフォルダを開く

 

__Step2.__ VisualStudio関連のフォルダを削除

  • HogeHoge.sln
  • HogeHoge.csproj
  • HogeHoge.csproj

        など

原因

これといった原因はわからなかったが、

おそらくVisualStudio関連のプロジェクトファイルの中身が壊れた可能性があると思われる

UnityEditorを日本語化してみる

Uniteで紹介された日本語化を試してみます。

UnityEditor 2018.1以降のバージョンを使用すること

UnityEditor 日本語化

実施環境 Windows10 UnityEditor2018.1.3f1

事前準備 UnityEditor2018をダウンロードする Editorダウンロードリンク

Step1. 翻訳ファイルのダウンロード http:// http://tsubakit1.hateblo.jp/entry/20140503/1399093963

Step2. 下記のディレクトリに"Localization"フォルダーを作成する C:\Program Files\Unity\Hub\Editor\2018.1.3f1\Editor f:id:MATCHA05:20180609044132p:plain

Step3. UnityEditorを起動する

Step4. 設定ウィンドウを開く Menu > Editor > Preferences f:id:MATCHA05:20180609044837p:plain

Step5. 設定を変更する ①にチェックを入れる ②をEnglish→Japanese に変更する f:id:MATCHA05:20180609044952p:plain

UnityEditorを再起動する

結果

無事日本語化完了しました。 f:id:MATCHA05:20180609045131p:plain

所感

まだβ段階なので、レイアウトや和訳がうまくいっていない部分が多々あるようです。 Unityエディター日本語化フィードバック - Unity Connectで日本語化のフィードバックを募集しているようです。

これからどんどんブラッシュアップされていくでしょう。 日本語なので、いろいろいじりながら細かい設定などがしやすそう、 だが、プログラムするならEnglishのままでいいかな。。

参考サイト

Unityエディター日本語化フィードバック - Unity Connect

【Unity】Unityエディターを日本語化する方法(Unity2018.1) - テラシュールブログ

Unite2018

今年はUniteに参加できなかったので、動画で上がっている分だけでもキャッチアップ!
Room2が配信されていたので拾ってきました。

あとで資料もアップされると思うので Unite Tokyo 2018

UnityEditorにもツールを入れれば日本語にできるようになる様です。(ついに)
UnityEditor 日本語化とかで調べればすぐ出てくるのでは

Day2では、Shader Grapが無料で使えるようになった AssetStoreの50%セールで似たようなの買ってしまった・・・ まぁいいものはUnityにどんどん取り込まれて機能は多くなっているがいろいろなことができるのはいい流れだと思う!

基調講演

unityjpのUnite Tokyo 2018 Day1 基調講演をwww.twitch.tvから視聴する

Day2

unityjpのUnite Tokyo 2018 Day2をwww.twitch.tvから視聴する

DAY 2 2018/05/08(火)
- 『崩壊3rd』開発者が語るアニメ風レンダリングの極意
- ユニティちゃんトゥーンシェーダー2.0使いこなしスペシャル ~こだわりの活用法を紹介します!~
- 実践的なパフォーマンス分析と最適化
- パーティクル・マニアクス
- その最適化、本当に最適ですか!? ~正しい最適化を行うためのテクニック~
- アーティストがUnityでサクッといいビジュアルを作るテクニック講座
- Unity for ディープ・ラーニング:ツールキット『ML-Agents』のご紹介(18:30終了予定)

Day3

unityjpのUnite Tokyo 2018 Day3をwww.twitch.tvから視聴する

DAY 3 2018/05/08(水)
- 新機能Shader Graphを使えばプログラミング無しにシェーダーが作れるようになります!
- スクリプトによるTimelineがっつり拡張入門
- 60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
- Windows Mixed Reality 最新アプリ開発情報 ~HoloLens からVRまで~
- Unityの開発サイクルとバグへの取り組みについて
- カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
- そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
18:50 Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~

Unity入門 チュートリアル ~プッシャーゲームPART2~

Coinに物理挙動を与える

f:id:MATCHA05:20170521223838p:plain
作成したコインのInspectorで、
AddComponentをクリックし、
検索窓にRiggidBodyと入力して出てきた値をクリックして、コインにRigidBodyを追加します。

f:id:MATCHA05:20170521224222p:plain
Use Gravityに✔が入っていることを確認し、
スタートボタンを押してみて、挙動を確認してみましょう。
f:id:MATCHA05:20170521224842g:plain
コインが落ちているのを確認しましょう。

Coinに衝突判定を与える

f:id:MATCHA05:20170521225321p:plain
先ほどと同じように、AddComponentからMeshColliderを追加します。
Convexに✔を入れましょう。
f:id:MATCHA05:20170521225652p:plain
コインをセットして、再生ボタンを押してみてみましょう。

Coinを大量にだす

作成したCoinの名前をCoin_001とします。
ProjectのビューにてCoinsまでのフォルダを作成しましょう。
Assets/Resources/Coins

Coinsまで作成できたら作成した、Coin_001をCoinsにドラッグアンドドロップして、Prefab化します。

CoinManager.csを作成します。

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

public class CoinManager : MonoBehaviour 
{
    //アップデート関数
    private void Update()
    {
        //スペースが押された
        if (Input.GetKeyDown(KeyCode.Space))
        {
            GameObject aCoin = Instantiate(Resources.Load("Coins/Coin_001")) as GameObject;
            aCoin.transform.position = new Vector3(0.0f,4.0f,0.0f);
        }
    }
}

Hierarchyビュー>右クリック>CreatEmptyで空のGameObjectを作成し,名前をCoinManagerに変更しましょう。
作成した、CoinManager.csをドラッグアンドドロップでアタッチします。

再生して確認してみましょう。
スペースを押すと、コインが出てくる仕組みになっています。

エラーが出る際は、Coin_001がちゃんとAssets>Resource>Coinsの下に配置されているか、名前が間違えてないか確認してください。


f:id:MATCHA05:20170304101419g:plain
ここまでで、とりあえず上記の動きが確認できると思います。

Unity入門 チュートリアル ~プッシャーゲームPART1~

プッシャーゲームを作成しながらUnityの使い方を学んでいきたいと思います。
下記の挙動になるように進めていきます。
f:id:MATCHA05:20170304101419g:plain


プッシャーオブジェクトを作成する

Untiy上部メニューから
GamObject>3DObject>Cubeを選択してObjectを生成します。
f:id:MATCHA05:20170304102245p:plain
生成したObjectをヒエラルキービューで選択して、
F2でCubeからTableに変更します。

InspectorViewでTableサイズとポジションを変更してみましょう。
TransformComponentの値を変更しましょう。
f:id:MATCHA05:20170304104016p:plain

次にプッシャーオブジェクトを作成します。
同じくキューブを使用するので、ヒエラルキービューでTableを選択して
Ctr+D でオブジェクトを複製します。
オブジェクト名を変更してPusherにしましょう。
ポジションを変更します。
X→0
Y→1
Z→5
壁を作成します。
名前をWallに変更
ポジションの変更
X→0
Y→3
Z→1.49
スケールの変更
X→6
Y→3
Z→1
f:id:MATCHA05:20170304111825p:plain
GamObject>CreatEmpty
空のオブジェクトを作成して
名前をCoinPusherに変更します。
PositionをX,Y,Zすべて0にします。
作成したTable、Pusher,Wallを
ヒエラルキービューで、CoinPusherにドラック&ドロップして、
CoinPusherという一つのオブジェクトにまとめます。



プロジェクトビューフォルダー管理

プロジェクトが巨大になるほどAssetの数も大量になっていきます。
ここで一つフォルダーの管理について学んでおきましょう。
Assetには3Dモデル、アニメーション、UIやスクリプトなど様々なものがあり、
必要なものを探すとき時間がかかってしまったり管理が大変です。
その都度必要なフォルダを作成して、Assetを管理していきましょう。

フォルダーの作成方法
Assets>creat>Folder
まやは
作成したフォルダー>creat>Folder

f:id:MATCHA05:20170304123257p:plain


プッシャーを動かす

f:id:MATCHA05:20170304113429g:plain


新しいスクリプトを作成してPusherControllerとしましょう。

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

public class PusherController : MonoBehaviour
{
    // プッシャーのゲームオブジェクト
    public GameObject Pusher;

    private void Awake()
    {
        // PusserのOffsetの初期化
        aPusherOffset = Pusher.transform.position.z;
    }

    //アップデート関数
    private void Update()
    {
        //プッシャーの値変更用の変数を用意
        Vector3 aPingPongPosition;
        aPingPongPosition.x = Pusher.transform.position.x;
        aPingPongPosition.y = Pusher.transform.position.y;
    //UnityのMathf.PingPong関数を使用してプッシャーを前後に動かすための値を生成
        aPingPongPosition.z = aPusherOffset - Mathf.PingPong(Time.time, 3);
        //プッシャーのポジションを前後に動かす 上記で生成した値を入れる
        Pusher.transform.position = new Vector3(aPingPongPosition.x, aPingPongPosition.y, aPingPongPosition.z);
    }

    // PusserのOffset
    private float aPusherOffset;
}

作成したスクリプトをCoinPusherにドラック&ドロップしてPusherControllerをアタッチします。
publicで宣言した変数はヒエラルキービューで変更したり見ることができます。、CoinPusher>Pusherをアタッチします。
再生ボタンを押してPusherが前後に動けば成功です。



Coinを作成する

GamObject>3DObject>Cylinderを選択してObjectを作成し、
名前をCoin_001に変更しましょう。

このコインをシュッとするといい感じにコインの形になるので、
Scale値をいじっていきましょう。
yの値を0.1に変更します。


形はコインぽくなりましたが色が白なので、
黄色に変更します。

色を簡単に変更する方法として、マテリアルの色をいじる方法がありますが、
現状だとDefaultになっているので、値を変えることができません。
新しいマテリアルを作成してアタッチしましょう。

プロジェクトビューでMaterialフォルダーを作成して、
Material>creat>Materialを選択してマテリアルを作成します。
名前をGoldにしましょう。

コインのプロジェクトビューでMeshRendererコンポーネントでMaterialsに作成したMaterialをセットします。
f:id:MATCHA05:20170304124556p:plain

Goldマテリアルの色を変更します。
アタッチしたマテリアルをクリックすると
プロジェクトビューで作成したGoldマテリアルが表示されるので、
選択してインスペクタービューにマテリアルを表示します。


チュートリアル ~プッシャーゲームPART2~ につづく

SceneView操作

方向キー

f:id:MATCHA05:20170416204715p:plain
シーンビューをフォーカスした状態で方向キーを押すと
キャラクターを動かすようにシーン内を移動することができる
f:id:MATCHA05:20170326194153g:plain


右クリック

右クリックしたままマウスを動かすと
シーン内を見渡すことができる
オブジェクトの配置状況や、
ビジュアルの確認を行う際に非常に便利である
f:id:MATCHA05:20170416205421g:plain


シーンギズモ

f:id:MATCHA05:20170416210338p:plain
シーンビューの右上に表示されているシーンギズモを(X,Y,Z)クリックすると
クリックした軸からの視点に切り替えることができる
f:id:MATCHA05:20170416210934g:plain

ハンドツール

f:id:MATCHA05:20170416211019p:plain
シーンビューをフォーカスしながらQを押すことで、
切り替えることができる
クリックしながらマウスを動かすことで、
カメラを移動することができる

f:id:MATCHA05:20170416212440g:plain

移動

f:id:MATCHA05:20170416213816p:plain
シーンビューをフォーカスしながらWを押すことで、
切り替えることができる
シーン内またはヒエラルキーでオブジェクトを選択し、
矢印をクリックしながらマウスを移動させることで、
オブジェクトを移動することができる。
f:id:MATCHA05:20170416214156g:plain

回転

f:id:MATCHA05:20170416213829p:plain
シーンビューをフォーカスしながらEを押すことで、
切り替えることができる
シーン内またはヒエラルキーでオブジェクトを選択し、
軸を選択しながらマウスを動かすことでオブジェクトを回転させることができる
f:id:MATCHA05:20170416214705g:plain

スケール

シーンビューをフォーカスしながらRを押すことで、
切り替えることができる
シーン内またはヒエラルキーでオブジェクトを選択し、
軸を選択しながらマウスを動かすことでオブジェクトのスケールを変更することができる
f:id:MATCHA05:20170416215509g:plain


2D編集

f:id:MATCHA05:20170416213822p:plain
シーンビューをフォーカスしながらTを押すことで、
切り替えることができる
移動、スケールの変更を行うことができる
f:id:MATCHA05:20170416220110g:plain