【ハルシオンブログ】UnityProBuilderで3D扇形オブジェクトを作ってみたよ。
6月もそろそろ終わり、7月がチラ見してきています。
1年も半分が終わってしまいましたね。
今年もコロナのせいで旅行も飲みもなにもない年になりそうです。
坂内っす。
Unityで扇形の3Dオブジェクトが欲しかったんだけど、検索してもあんまり方法が見つけれなかったので書いておく。
ちなみにProBuilderでやってます。
(もっと簡単な方法あるかもね?)
ProBuilderWindowからNewShapeを選び、ShapeToolで形をCylinder(円錐)にします。

Number of Sidesは外周の点の数。この数を減らすほどがくがくになり、増やすほどより円になる。
大きさや点の数、高さなどを決めたら、ShapeToolの下にある「Build」ボタンを押すとオブジェクトが作られます。

できあがったオブジェクトがこちら。

ここから180度、90度、45度の扇形を作っていきます。
まずは180度のやつを作るために18個の外周の面を選択します。

面選択ツール(上の赤丸)を選択し、Ctrl(Win)を押しながら面を①から順番に選択していきます。
面を選択終わったら、「Select Face Ring」を選択します。

そうすると、円錐の半分が選択された感じになると思います。
この状態で、「Detach Faces」を選択します。

これをすることで、選択した部分を元の丸からはがすことができます。

片方のいらない半分を消します。
次に、面選択ツールから辺選択ツールに変更し、SSのように端を選択し「Fill Hole」を選択します。

面ができます。

(ここ上手く面ができない時は、Detach後まで戻り、消した残りの半分を使うとうまくいくことがあります(謎))
次に点選択ツールで、真ん中の2点を選択し、「Connect Vertices」を選択します。

とりあえずここまでで、180度の扇形が完成です。
次に90度の扇形は、この180度のをベースに作っていきます。
面選択ツールで外周の面を8個選択し、「Select Face Ring」を選択しDetach Facesで消していきます。

最後に端の辺を選択し、「Fill Hole」をすると90度の扇形の完成です。

90度を作るのと同じ感じで45度も作成できます。

こんな感じで扇形がProBuilderで簡単に作れるようです!
今日は3Dの扇形の作り方でしたー あでゅ~ノシ
1年も半分が終わってしまいましたね。
今年もコロナのせいで旅行も飲みもなにもない年になりそうです。
坂内っす。
Unityで扇形の3Dオブジェクトが欲しかったんだけど、検索してもあんまり方法が見つけれなかったので書いておく。
ちなみにProBuilderでやってます。
(もっと簡単な方法あるかもね?)
ProBuilderWindowからNewShapeを選び、ShapeToolで形をCylinder(円錐)にします。

Number of Sidesは外周の点の数。この数を減らすほどがくがくになり、増やすほどより円になる。
大きさや点の数、高さなどを決めたら、ShapeToolの下にある「Build」ボタンを押すとオブジェクトが作られます。

できあがったオブジェクトがこちら。

ここから180度、90度、45度の扇形を作っていきます。
まずは180度のやつを作るために18個の外周の面を選択します。

面選択ツール(上の赤丸)を選択し、Ctrl(Win)を押しながら面を①から順番に選択していきます。
面を選択終わったら、「Select Face Ring」を選択します。

そうすると、円錐の半分が選択された感じになると思います。
この状態で、「Detach Faces」を選択します。

これをすることで、選択した部分を元の丸からはがすことができます。

片方のいらない半分を消します。
次に、面選択ツールから辺選択ツールに変更し、SSのように端を選択し「Fill Hole」を選択します。

面ができます。

(ここ上手く面ができない時は、Detach後まで戻り、消した残りの半分を使うとうまくいくことがあります(謎))
次に点選択ツールで、真ん中の2点を選択し、「Connect Vertices」を選択します。

とりあえずここまでで、180度の扇形が完成です。
次に90度の扇形は、この180度のをベースに作っていきます。
面選択ツールで外周の面を8個選択し、「Select Face Ring」を選択しDetach Facesで消していきます。

最後に端の辺を選択し、「Fill Hole」をすると90度の扇形の完成です。

90度を作るのと同じ感じで45度も作成できます。

こんな感じで扇形がProBuilderで簡単に作れるようです!
今日は3Dの扇形の作り方でしたー あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】クラス名を変更したいときはVisual Studioで変更してあげるとファイル名も変えてくれるよ
こんにちは。
大坂です。
開発を進めてるとやっぱりクラス名を変えようかなと思うことがたまにあります。
ファイル名を変えて開いていコードのクラス名を変えてもいいのですが、
Visual Studioの名前の変更を使うとファイル名も変えてくれるのでこっちを使った方がよさそうですかね。
このファイルを開いて変えてみます。

コードを開いたら、クラス名を選択して、「F2」か右クリックで「名前の変更」を選択します。
その時に画像の「シンボルのファイル名を変更する」にチェックを入れる。(デフォルトで入ってると思います。)

「Test」⇒「Test_1」に変更。

Unityでファイル名を確認すると変わってますね。

こんな感じで変えられるので何かの時にクラス名を変えたいときに使ってみてください。
ではまたノシ
大坂です。
開発を進めてるとやっぱりクラス名を変えようかなと思うことがたまにあります。
ファイル名を変えて開いていコードのクラス名を変えてもいいのですが、
Visual Studioの名前の変更を使うとファイル名も変えてくれるのでこっちを使った方がよさそうですかね。
このファイルを開いて変えてみます。

コードを開いたら、クラス名を選択して、「F2」か右クリックで「名前の変更」を選択します。
その時に画像の「シンボルのファイル名を変更する」にチェックを入れる。(デフォルトで入ってると思います。)

「Test」⇒「Test_1」に変更。

Unityでファイル名を確認すると変わってますね。

こんな感じで変えられるので何かの時にクラス名を変えたいときに使ってみてください。
ではまたノシ
Category: Androidアプリ紹介
【ハルシオンブログ】Unity+VisualStudioCodeインストールしてみたよ。
おはようございます。
緊急事態宣言があけて、条件付きで酒類の提供も再開されました。
なかなか怖くていけませんが・・・・
今までUnity+VisualStudioで開発してたのですが、VisualStudioCodeが軽くて使いやすいとのことで、導入してみた。
①VSCodeをインストール
②Unityでコードを開く時のツールをVSCodeにする

ここまでだと補完も何もしてくれないので、C#の拡張機能を入れないといけないらしい。
VSCode>File>Preferrences>Extentionsを選択し、C#の拡張機能をインストールします。


これでVSCodeでC#ができるようになりました。
補完もばっちし!
ちょっとこれで開発やっていきたいと思います。
本日はVSCodeのインストール方法でした。
では、あでゅ~ノシ
緊急事態宣言があけて、条件付きで酒類の提供も再開されました。
なかなか怖くていけませんが・・・・
今までUnity+VisualStudioで開発してたのですが、VisualStudioCodeが軽くて使いやすいとのことで、導入してみた。
①VSCodeをインストール
②Unityでコードを開く時のツールをVSCodeにする

ここまでだと補完も何もしてくれないので、C#の拡張機能を入れないといけないらしい。
VSCode>File>Preferrences>Extentionsを選択し、C#の拡張機能をインストールします。


これでVSCodeでC#ができるようになりました。
補完もばっちし!
ちょっとこれで開発やっていきたいと思います。
本日はVSCodeのインストール方法でした。
では、あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】Visual Studioが複数インスタンス開く話
こんにちは。
大坂です。
Visual Studioで警告とかのポップアップが出ているのに気づかないで、
他のファイルを開こうとしたときにVisual Studioが別インスタンスで開いてしまって微妙だなぁと思うことがありました。
こんなポップアップとか。

そんなことがあったら、PakeageManagerでVisual Studio Editorを消してあげるといいみたいです。

何かこんなことが起きたら試してみてください。
ではまたノシ
大坂です。
Visual Studioで警告とかのポップアップが出ているのに気づかないで、
他のファイルを開こうとしたときにVisual Studioが別インスタンスで開いてしまって微妙だなぁと思うことがありました。
こんなポップアップとか。

そんなことがあったら、PakeageManagerでVisual Studio Editorを消してあげるといいみたいです。

何かこんなことが起きたら試してみてください。
ではまたノシ
Category: 開発日記(Unity)
【ハルシオンブログ】テキストと背景の絵のサイズを一緒にしたい!改行したら背景も伸びて!の巻
おはようございます。
月曜日になりました。
坂内っす。
関東は梅雨入りしたらしいですね。
今日は雨なのに歯医者があります・・・・あーだるい。
あ、Unityの話。

こんな感じで文字の背景とテキストのサイズが合わない。
そんなことありませんか?
そんな時はこうします!
(100回くらい書いたネタのような気がしますが・・・)
まずは背景の絵の子供にテキストを置きます。

テキストのPivotのYを1にする。

テキストのオブジェクトにContentsSizeFitterをつけ、VerticalFitをPreferred Sizeにする。

親のImageオブジェクトにもContentsSizeFitterをつけ、VerticalFitをPreferred Sizeにする。
親のImageオブジェクトにVerticalLayoutをつける。


このままだと、背景の絵と文字の場所がずれてるので、VerticalLayoutのPaddingで調整する。


こんな感じでテキストの高さに背景の絵が合わせてくれるようになりました。
では、あでゅ~ノシ
月曜日になりました。
坂内っす。
関東は梅雨入りしたらしいですね。
今日は雨なのに歯医者があります・・・・あーだるい。
あ、Unityの話。

こんな感じで文字の背景とテキストのサイズが合わない。
そんなことありませんか?
そんな時はこうします!
(100回くらい書いたネタのような気がしますが・・・)
まずは背景の絵の子供にテキストを置きます。

テキストのPivotのYを1にする。

テキストのオブジェクトにContentsSizeFitterをつけ、VerticalFitをPreferred Sizeにする。

親のImageオブジェクトにもContentsSizeFitterをつけ、VerticalFitをPreferred Sizeにする。
親のImageオブジェクトにVerticalLayoutをつける。


このままだと、背景の絵と文字の場所がずれてるので、VerticalLayoutのPaddingで調整する。


こんな感じでテキストの高さに背景の絵が合わせてくれるようになりました。
では、あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】AndroidLogcatでキャプチャーとれるんですね。
こんにちは。
大坂です。
以前AndroidLogcatの記事を書きましたが、
AndroidLogcatって端末のキャプチャー撮れるんですね。
この「Capture Screen」を押すだけですね。

端末を接続して押してみると、このWindowが出てきます。

SaveボタンでそのままPCに保存できるので、
キャプチャーをいっぱい撮って何かを作りたいときなんかに役立ちそうですね。
今週もこれにてノシ
大坂です。
以前AndroidLogcatの記事を書きましたが、
AndroidLogcatって端末のキャプチャー撮れるんですね。
この「Capture Screen」を押すだけですね。

端末を接続して押してみると、このWindowが出てきます。

SaveボタンでそのままPCに保存できるので、
キャプチャーをいっぱい撮って何かを作りたいときなんかに役立ちそうですね。
今週もこれにてノシ
Category: 開発日記(Unity)
【ハルシオンブログ】オブジェクトをnullにする場合は、DestroyよりDestroyImmediateを使った方がいいらしいですよ?
おはようございます。月曜の朝です!
1週間が始まりました。坂内です。
Unityでのnullの話。
例えばこんなコード
[Blog0607.cs]
lblTextにはなにもアサインしていません。
Null
UnityEngine.Debug:Log(Object)
Blog0607:Start() (at Assets/Scripts/Blog0607.cs:12)
「Null」が表示されました。
では次にlblTextにTextのオブジェクトをアサインします。
Text (UnityEngine.UI.Text)
UnityEngine.Debug:Log(Object)
Blog0607:Start() (at Assets/Scripts/Blog0607.cs:12)
「Null」ではなくなりました。
では、アサインした後にコードでnullにしてみましょう。
nullを入れるとnullになりますが、Destroyだとnullにはなりません。
結果はこちら。

実はDestroyだとすぐには消えないようです。
こいつをすぐに消すには、Destroyを使わずにDestroyImmediateを使うといいらしいですよ。

ということで、すぐに消したい場合はDestroyImmediateを使いましょう。
では、あでゅ~ノシ
1週間が始まりました。坂内です。
Unityでのnullの話。
例えばこんなコード
[Blog0607.cs]
using UnityEngine;
using UnityEngine.UI;
public class Blog0607 : MonoBehaviour
{
[SerializeField] Text lblText;
void Start()
{
Debug.Log(lblText);
}
}
lblTextにはなにもアサインしていません。
Null
UnityEngine.Debug:Log(Object)
Blog0607:Start() (at Assets/Scripts/Blog0607.cs:12)
「Null」が表示されました。
では次にlblTextにTextのオブジェクトをアサインします。
Text (UnityEngine.UI.Text)
UnityEngine.Debug:Log(Object)
Blog0607:Start() (at Assets/Scripts/Blog0607.cs:12)
「Null」ではなくなりました。
では、アサインした後にコードでnullにしてみましょう。
using UnityEngine;
using UnityEngine.UI;
public class Blog0607 : MonoBehaviour
{
[SerializeField] Text lblText;
[SerializeField] Text lblText2;
void Start()
{
Debug.Log(lblText);
Debug.Log(lblText2);
lblText = null;
Destroy(lblText2);
Debug.Log("-----------------");
Debug.Log(lblText);
Debug.Log(lblText2);
}
}
nullを入れるとnullになりますが、Destroyだとnullにはなりません。
結果はこちら。

実はDestroyだとすぐには消えないようです。
こいつをすぐに消すには、Destroyを使わずにDestroyImmediateを使うといいらしいですよ。
using UnityEngine;
using UnityEngine.UI;
public class Blog0607 : MonoBehaviour
{
[SerializeField] Text lblText;
[SerializeField] Text lblText2;
void Start()
{
Debug.Log(lblText);
Debug.Log(lblText2);
lblText = null;
DestroyImmediate(lblText2);
Debug.Log("-----------------");
Debug.Log(lblText);
Debug.Log(lblText2);
}
}

ということで、すぐに消したい場合はDestroyImmediateを使いましょう。
では、あでゅ~ノシ
Category: 開発日記(Unity)
【ハルシオンブログ】LINQのToLookUpを使ってみた
こんにちは。
大坂です。
LINQのToLookUpを使ってコレクションをグループ分けできるようなので使ってみました。
アイテムとかで種類別にグループ分けするのに使うと便利ですかね?
こんな感じで使えますね。
結果。

ちゃんと種類別に分けられてますね。
アイテム屋さんとかで種類別に売り物の表示切替をしたいときなんかに便利そうですね。
では今日もこの辺でノシ
大坂です。
LINQのToLookUpを使ってコレクションをグループ分けできるようなので使ってみました。
アイテムとかで種類別にグループ分けするのに使うと便利ですかね?
こんな感じで使えますね。
class ItemData {
public string type;
public string name;
public int price;
}
private void Start() {
ItemData[] data = new ItemData[] {
new ItemData() {type = "武器", name = "ナイフ", price = 100 },
new ItemData() {type = "武器", name = "剣", price = 200 },
new ItemData() {type = "武器", name = "斧", price = 300 },
new ItemData() {type = "防具", name = "布の服", price = 100 },
new ItemData() {type = "防具", name = "革の鎧", price = 300 },
new ItemData() {type = "防具", name = "鉄の鎧", price = 500 },
};
ILookup<string, ItemData> items = data.ToLookup(x => x.type);
foreach(var item in items) {
Debug.Log($"種類:{item.Key}");
foreach(ItemData itemData in item) {
Debug.Log($"名前:{itemData.name} 価格:{itemData.price}");
}
}
}
結果。

ちゃんと種類別に分けられてますね。
アイテム屋さんとかで種類別に売り物の表示切替をしたいときなんかに便利そうですね。
では今日もこの辺でノシ
Category: 開発日記(Unity)
| h o m e |