20190507のUnityに関する記事は6件です。

【放送補助ブロック】ホントはこんなことしたかった。

まずはじめに

これ作ったよ:放送補助ブロック / THE SEED ONLINE
 https://seed.online/items/34fc5783856afca34e9251ad8447bb733a0ed38d80937afc867b9088eed1a7d0

これはなに?

 凸ありなし・音ありVCI使用○×を表すやつ
 これ配信画面とか目につくところに置けば便利だよねってやつ。
icon.png

ホントはこんなことしたかった

 凸と音ありVCIで合わせて2つのブロックにしたかった
→どういうこと?

 1つのブロックをonUseするとまるばつテクスチャが切り替わるようにしたかった
→なんでしないの?

 現状のVCIは制限が多くて再現するには回りくどいやり方しかない
→というのは?

 現時点でテクスチャを切り替える事はできない。そのため、複数のテクスチャを1枚の画像にまとめ、UVのOffset移動で表す必要がある。
 詳しくは→https://virtualcast.jp/wiki/doku.php?id=モデル作成:vci作成:切替ポスター
→なぜやらないの?
 
 UnityよりBlenderわからないマンだから。バーチャルキャストの公式WikiではUnityのことは事細かく丁寧に解説されているが、UV等の設定はUnityではできない。そしてVキャスWikiではBlender?そんなもの知らんな状態。これだとなぁ...

ホントはこんなことしたかった その2

 必要なやつは固定できて必要ないやつはどっかに投げられるようにしたかった
→どういうこと?

 ブロックをonUseするとIsKinematicをオン・オフできるようにしたかった
→というのは?

 IsKinematicをオンにすると物理演算が有効になるので投げられるようになるが、オフにすると物理演算無効なので投げられない
→???

 簡単に言うと、ニコ生でコメントしたときに降るアイコン。
 あれをonUseすると固定される。そんな感じにしたかった。
→なんでしないの?

 現状のVCIでは再現することができないから。なぜできないシステムなのかは公式に聞いてください。以上。

とりあえず改良してくれる人いないかな

2つ目はともかく、1つ目は僕の技術不足が原因なので、Blenderわかるマンいたら全然改良してもらって構いません。
もちろん、少しずつだけどblender勉強中なので自己解決するかも。

https://github.com/AyumuNekozuki/VCI_broadcast-auxiliary-block

追記

 VCI作成者が集うDiscord(非公式)でとある方がこんな事を言っていた。
「どうしても実装する必要があれば、IsKinematicがオン/オフの2つのサブアイテムを用意して、必要に応じて片方表示、片方非表示(地面に埋める等)にするくらいですかね~」

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unityで画像を丸く切り抜いて枠をつける方法

こんにちは、ブログ「学生ブロックチェーンエンジニアのブログ」を運営しているアカネヤ(@ToshioAkaneya)です。

Unityで画像を丸く切り抜いて枠をつける方法

丸くしたい対象がSpriteだとします。
そのSpriteの親オブジェクトにSprite Maskとして円形の画像を配置して子のSpriteを丸くします。

これだけだとフチがギザギザしてしまうので、枠のために輪っか状のpng画像を用意して、Sprite MaskをつけたオブジェクトにSpriteとして輪っか状のpng画像を配置します。

参考になれば幸いです。

はてなブックマーク・Pocketはこちらから

はてなブックマークに追加
Pocketに追加

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity:UIElements の使い方(Unity2019新機能)

はじめに

こんにちは、のんびりエンジニアのたっつーです。
ブログを運営しているのでよろしければ見てください。

今回はUnity 2019の新機能、UIElements の使い方を解説してみようと思います。
ぜひ、お付き合いいただければと思います。

UIElementsとは?

従来のエディタ拡張システムの ImGui を置き換える新しいGUIシステムになります。また、将来的にはランタイムのUI(uGUI)もこの UIElements に置き換わるとされています。

aaa.png

開発者がUIレイアウトおよびスタイル設定をすばやく作成および編集できるようにする新しい保持モードのGUIシステムです。
新しいGUIシステムは、UnityのUIの作成と最適化を容易にするために、WebのCSS、jQuery、HTML DOM、およびEventsシステムから概念を借りています。

また、パフォーマンスが向上し、スタイルシートや動的/コンテキストイベント処理などの多くの新機能も提供されます。

パフォーマンスとスケーラビリティを念頭に置いて新しいシステムを構築したので、開発者がUIを構築、変更、および対話することを可能にする従来の包括的なC#APIがあります。
使い慣れたC#API、イベントシステム、CSS、およびXMLのインポート形式により、ユーザーインターフェイスを簡単に構築できます。
UI Elementsは、エディタUIを拡張および作成するためのIMGUIに代わるものであり、将来のリリースではランタイムUIを作成するためにuGUIに代わるものとなるでしょう。
https://blogs.unity3d.com/jp/2019/04/16/introducing-unity-2019-1/#uielements

つまり何が言いたいかと、、、

こうゆう事風にエディタを拡張できます。(今)

image-217.png

こうゆう事がuGUIが将来的にUIElementsでできるようになります。(未来)

8420_main.jpg

UIElements はどんな事に使える?

Unity:UIElements の使い方(Unity2019新機能)をご参照ください。

使い方

ウィンドウの新規作成

非常に簡単に作成できます、まずはEditorフォルダを作成してください。
次に、右クリックから Create > UIElements Editor Window を選択してください。

uielements-001.png

UIElements のウィンドウ作成ウィザードが表示されるので、今回は「TestWindows」と入力しました。
次に、「Open file 〜」をオンにして、「Confirm」ボタンを選択してください。

uielements-002.png

おめでとうございます。
もう新規ウィンドウが作成できました!!

uielements-003.png

作成ウィザードのおかげで、以下の3ファイルがすでに作成されています。

uielements-004.png

ウィンドウを間違えて閉じてしまった場合は、メニューのWindow > UIElements > TestWindows を選択すれば再度表示が行えます。

uielements-005.png

ソースコードを確認してみる。

Unity:UIElements の使い方(Unity2019新機能)をご参照ください。

個別のスクリプトにUIElementsを使う

最後にサンプルで、個別のスクリプトにUIElementsを使ってみようと思います。

上記のサンプルのC#ソースコードを以下のように変更しました、内容としては AAA スクリプトに UIElements を適用するって感じの内容です。

using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;

[CustomEditor(typeof(AAA))]
public class TestWindows : Editor
{
    public override VisualElement CreateInspectorGUI()
    {
        var root = new VisualElement();

        // VisualElements objects can contain other VisualElement following a tree hierarchy.
        VisualElement label = new Label("Hello World! From C#");
        root.Add(label);

        // Import UXML
        var visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/TestWindows.uxml");
        VisualElement labelFromUXML = visualTree.CloneTree();
        root.Add(labelFromUXML);

        // A stylesheet can be added to a VisualElement.
        // The style will be applied to the VisualElement and all of its children.
        var styleSheet = AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/Editor/TestWindows.uss");
        VisualElement labelWithStyle = new Label("Hello World! With Style");
        labelWithStyle.styleSheets.Add(styleSheet);
        root.Add(labelWithStyle);

        return root;
    }
}

すごく簡単にAAAスクリプトに UIElements を適用できました。
これでリッチなテキスト・ボタンを設定したり画像を表示したりといろいろできそうですね。

uielements-006.png

以前書いた記事で、インスペクターに画像を表示するをやりましたが。
UIElementsバージョンだともっと簡単に記述できそうですね、時間があれば試してみたいと思います!

懸念点

表現力が高いUIが氾濫して、UIの統一感がなくなるのでは?と思っています。

終わりに

よければ ブログ「初心者向けUnity情報サイト」の方にも色々記載しているのでぜひご参照いただければと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity:アセット(Asset)のインポートの方法(5種類!?)

はじめに

こんにちは、のんびりエンジニアのたっつーです。
ブログを運営しているのでよろしければ見てください。

Unity では、Asset Store や Github で 「~.unitypackage」ファイルをダウンロードして使う事がありますよね。

今回はこの .unitypackage ファイルをインポートして使う方法/Asset Storeでインポートして使う方法をいくつかご紹介させていただきます。

インポートの使い方

インポート方法についてはブログに使い方を記載しましたのでこちらをご参照ください。

インポートの種類

アセットを組み込む方法は実はいくつかありますが、皆さんはいくつわかりますでしょうか?

私が調べた感じでは実は5種類のアセットの組み込み方法が存在します。
5種類ってすごくないですか!?

さっそくそれぞれの方法をご紹介させていただきます。

1.ドラッグアンドドロップ

一番シンプルだと思う手順ですね。~.unitypackage をドラッグアンドロップで Assets のフォルダに配置
するとインポートが行えます。

※この方法はローカルに ~.unitypackage が無いと使えません。

import1.jpg

2.メニューからインポート

次にやるのはメニューからインポートするパッケージを選ぶ豊富です、こちらもポピュラーなやり方で皆さん知っているかと思います。

※この方法はローカルに ~.unitypackage が無いと使えません。

import2.jpg

3.Asset Storeからインポート

次の方法は、Asset Storeウィンドウを開いて、アセットを検索してページを開いてからインポートを実行するやり方です。

※この方法は Asset Store を使う方法として一般的です。
※ちなみにファイルの保存先は以下の保存先に保存されます。
 (C:\Users\%USERNAME%\AppData\Roaming\Unity\Asset Store-5.x)

import3.jpg

4.PackageManager を使う

Unity 2018 移行では PackageManager の機能が追加されました。この機能はUnityの公式パッケージを配布するための方法として実装されているようです。そのためUnityが公式で配布しているアセットはインストールが行えます。

image-212.png

image-213.png

5.manifest.json を記述する

こちらの記事で使っていますが、プロジェクトに保存されている「manifest.json」にURLを追加すると自動的にアセットがインストールされます。
これは PackageManager はUnity公式の配布で利用されていますが、manifest.jsonを変更する事により、第三者でもパッケージの配布が行えることを指します。(Unity的にはこの使い方はグレー・・・?)

Package > manifest.json に保存されているファイルを編集するので、エクスプローラーで探してエディタで開きましょう。

image-114.png

テキストファイルの先頭に「”com.beans.deform”: “https://github.com/keenanwoodall/Deform.git”,」を追加します。

image-115.png

最後に

どうでしたでしょうか、最後の manifest.json を変更する方法は知らない方が多かったのではないでしょうか。
Unity の PackageManager が追加されてから パッケージの管理の複雑さが増した感じがしますがすごく便利なのでぜひ積極的に活用してみましょう!

よければ ブログ「初心者向けUnity情報サイト」の方にも色々記載しているのでぜひご参照いただければと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity:Sceneで特定モデルの表示・非表示を切り替える

はじめに

こんにちは、のんびりエンジニアのたっつーです。
ブログを運営しているのでよろしければ見てください。

Unity 2019.1 からシーンビューでモデルの表示・非表示が行える機能が追加されていましたのでそのご紹介をさせていただきます。

切り替え方法

使い方は簡単です、HierarchyビューでON/OFFをしたいモデルにマークを付けます。

image-14.png

次に、シーンビューのアイコンをON/OFFすると、表示・非表示が切り替えられます。!

image-15.png

実際に試した感じはこんな感じです。

visible-hidden-toggle.gif

終わりに

よければ ブログ「初心者向けUnity情報サイト」の方にも色々記載しているのでぜひご参照いただければと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Unity】クリック(タップ)した場所にボタンが存在するかどうかを判定するメソッド

ボタン判定メソッド

表題のメソッドは以下になります。

    bool IsButtonTap()
    {
        //タップ検知したGameObjectを取得。
        GameObject tapObj = EventSystem.current.currentSelectedGameObject;
        //取得したGameObjectがnullならばfalseを返す。
        if (!tapObj) { return false; }
        //取得したオブジェクトからButtonを取得。
        Button btn = tapObj.GetComponent<Button>();
        //ボタンがnullかどうかを返す。
        return btn;
    }

参考

EventSystem.current.currentSelectedGameObject

この関数で、現在の検知したオブジェクトを取得出来ます。

Object.bool

unityでnullチェックをする際、上の例で言うと「btn!=null」と表記しなくても「btn」と書くだけで同じことが出来てしまいます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む