fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

2013年12月 | ARCHIVE-SELECT | 2014年02月

PREV | PAGE-SELECT | NEXT

≫ EDIT

UnityEditor でウィンドウにアイコンを表示する

折角自作ウィンドウを UnityEditor で造ったのだからアイコンを表示してみましょう。

ということで参考になるサイトがありました。

・EidtorWindowのタイトルに好きなアイコンを付けてみた
http://masa795.hatenablog.jp/entry/2013/09/01/142706

いくつか同じようなことを扱ってるのを見かけたのですが
上記の記事が一番わかりやすかったです。

>「Assets/Editor Default Resources/Icons/」配下にタイトル名と同じ名前のpng画像を入れる。

といったところですね。

無事自作ウィンドウにアイコンを表示することができました。

ウィンドウにアイコン


| Unity | 00:50 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

Prefab と Instantiate

同じオブジェクトを複数だしたりするとき、
元の設定を変更すると全てに反映させたかったりします。

この仕組みを提供するのが Prefab ですね。
基本的概念はインスタンス制御でしょうか。

とりあえず公式のページはここに。

・プレハブ / Prefabs
http://docs-jp.unity3d.com/Documentation/Manual/Prefabs.html

ゲームオブジェクトをインスタンスとして扱うための Prefab については
以下のページを参考にしました。

・Unity勉強 第10回 「Prefabを試してみる」
http://befool-inc.github.io/blog/2013/10/05/unity-study-10-prefab/

こうすることでインスタンスとして制御でき、元のデータをいじるとすべてのインスタンスに反映されます。
便利ですね。

そして、この Prefab をスクリプトから生成するのが Instantiate です。
スクリプトから Instantiate() 関数を実行することでインスタンスを生成することができます。

詳しくはここを見たほうが早いかと思います。

・Unity: Prefabをスクリプトからインスタンス化する
http://hamken100.blogspot.jp/2012/04/unity-prefab.html

この仕組みを使ってサイコロをいっぱいだしてみました。



上手くいったのではないかと思います!

| Unity | 02:46 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

シーンの遷移

UnityEditor で作ったシーンを移動するための方法です。

結構ここは簡単で以下のようなソース一行で遷移させることができます。

Application.LoadLevel("シーン名");


シーン名は UnityEditor で保存したシーン名になります。

ただし、シーンを保存しただけではダメで、
UnityEditor の Build Settings の Scenes In Build に登録してないといけないのに注意してください。

というわけでモデルを見るシーンをタイトルから移行できるようにしてみました。

タイトルタスク

凄くシンプルですが上記の画面から…

モデルビュアータスク

ボタンを押すとこの画面に移行することができました。
パッと切り替わってしまったり、この関数だと同期読み込みなので止まってしまうのが難点ですね。
ここらへんはもう少し色々やる必要がありそうです。

| Unity | 03:14 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

Unity で Twitter の投稿を行う

Unity で Twitter の投稿を行う方法です。

今回は自分から説明することはほとんどなく、以下のページを参考に作成しました。

・UnityGames : 「Twitter in UnityWebPlayer その2」
https://github.com/anchan828/twitter-in-unity-webplayer

元の記事もあったのですがなくしてしまったので現在探してます。
どこかのブログだった気がするのですが…。

まずは Web Player の方で試してみました。

Twitterボタン

画面右上に「Tweet」ボタンを設置しました。
Web Player の場合には Twitter のウィンドウを開くようになっています。
それが一番無難そうです。

| Unity | 03:08 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

非アクティブなコンポーネントの取得

モデルの持つコンポーネント一覧を出したりするウィンドウを作っているときなど、
非アクティブなコンポーネントも取得したかったのですがうまくできませんでした。

こんな感じで取得していました。

MeshRenderer[] meshRendererList;
meshRendererList = gameObject.transform.GetComponentsInChildren< MeshRenderer>();


どうも非アクティブなコンポーネントを取得するには
GetComponentsInChildren() の引数を true にする必要があったみたいです。


MeshRenderer[] meshRendererList;
meshRendererList = gameObject.transform.GetComponentsInChildren< MeshRenderer>(true);


こうすることで非アクティブなコンポーネントを取得することができました。

ゲーム中はこういった処理は必要ないのですが
UnityEditor などで便利機能を作るときには結構必要になるのですよね…。

| Unity | 03:12 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

プラットフォームの切り替え

前にまとめてビルドするウィンドウをスクリプトで造ったのですが
最後にビルドしたプラットフォームになっていたので、元に戻す処理を追加してみました。

とりあえずここを参考にしました。

・Switch Editor Platform from Script
http://answers.unity3d.com/questions/31935/switch-editor-platform-from-script.html


EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.StandaloneWindows);


こんな感じで書いてあげれば切り替わります。

| Unity | 02:48 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

モデルのあれこれを一覧化するウィンドウを作成

UnityEditor について学んだので
Inspector 上で表示されるような値を表示・設定できるようなウィンドウを作ってみました。

モデル全てに含まれる情報は Inspector で確認するには
書くオブジェクトを選択しないといけなくてめんどくさかったので…。

というわけで今までの知識を組み合わせてこんなものを作ってみました。

モデルアトリビュート

モデルの情報(コンポーネント)を一覧で表示するウィンドウですね。
これでどういった情報を持っていてどういった設定がされているのかが一目瞭然に!
とはいえパラメータ少ないので確認できる項目は今は少ないですが…。

Unity はこういった感じでカスタマイズできるのが楽しいですね。

| Unity | 00:31 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

全ての GameObject をリストアップ

UnityEditor でいろいろ便利なものを作ろうと思ったのですが
全てのゲームオブジェクトを調べる方法がわからなかったので色々検索してみました。

とりあえず知り合いに教えてもらった以下のページ。

・How to get all GameObjects in Scene?
http://answers.unity3d.com/questions/329395/how-to-get-all-gameobjects-in-scene.html

英語なのですがとりあえず、こんな感じでリストアップできるようですね。

object[] allObjects = Resources.FindObjectsOfTypeAll(typeof(GameObject));


あとは foreach なりで対処すればよさそうですね。

ちなみにこのままだとなぜか Asset の中までリストアップされてしまったのでした。

というわけで以下のサイトを参考に。

・Resources.FindObjectsOfTypeAll
http://docs.unity3d.com/Documentation/ScriptReference/Resources.FindObjectsOfTypeAll.html


GameObject gameObject;
if (gameObject.hideFlags == HideFlags.NotEditable || gameObject.hideFlags == HideFlags.HideAndDontSave){

// Asset のオブジェクト
}

といった感じっぽいです。間違ってたら教えていただければと…。
とりあえず自分はこれでちゃんと全てリストアップすることができました。

| Unity | 22:34 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

続・ルックアット

前回はこんな感じでしたが…。

・transform の回転をプログラムから制御
http://kagring.blog.fc2.com/blog-entry-6.html

ブレンドシェイプが使えるようになったのでこれにプラスして、目を動かしてみました。
ここら辺の制御はほぼ transform と同じで角度に対して
ブレンドシェイプのウェイトを変更してやるといったことでできました。

その結果がこちら!


なかなか良い感じになったのではないでしょうか。

| Unity | 02:18 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

両面描画シェーダーの作成

影を落としたり、アウトラインを押し出しで行う場合など
本来は両面描画のポリゴンは使わない方が良いのですが
前につかったリソースを表示するには両面描画がほしかったので調べてみました。

どうも Unity のデフォルトシェーダーには両面描画ないっぽいですね…。

というわけで、以下のサイトを参考にして作ってみました。

・Unityの両面シェーダー
http://tortale.com/2013/07/unity.php

基本はシェーダーに対して

Cull Off


この記述を入れればよいみたいですね。
欲しい機能はデフォルトシェーダーに欲しい機能だったので以下のサイトさんを参考にしました。

■[Unity][Unity3d]ビルドイン(内蔵)シェーダの「Diffuse」のコードを読む
http://d.hatena.ne.jp/nakamura001/20120405/1333644877

・Unity download archive
http://unity3d.com/unity/download/archive/

このサイトにある Built-in shaders をダウンロードして魔改造をしてみました。

両面描画

無事両面描画(樹)ができるようになりました!

| Unity | 01:59 | comments:0 | trackbacks:0 | TOP↑

PREV | PAGE-SELECT | NEXT