FC2ブログ
08 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 10

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】Visual Studio 2019を導入してみた。 

こんにちは。
大坂です。

あまりにもネタがなかったのでVisual Studio 2019の導入について。
ダウンロードや新機能は以下で確認できます。
Visual Studio 2019 の新機能

Unityで使用する場合はインストール時に以下にチェックを入れる。

※クリックで拡大します。

これでUnityの「Edit」-「Preference」を開けば選べるようになります。

※クリックで拡大します。

ついでに上の新機能に載ってないやつで便利そうだったのをちょっとだけ。

CodeLens機能。デフォルトで有効になってるのですぐ気づきますが。
メソッドなどの参照個数をコード上に出してくれるやつです。
クリックしたらどこで使ってるかとか使用箇所に飛ばしてくれる機能もついてます。


クリックするとこんな感じです。


邪魔で消したければ、「ツール」-「オプション」を開いて、
「テキストエディター」-「すべての言語」-「CodeLens」のチェックを外せば消えます。


もう1個。
コピーの履歴から貼り付けができるみたいです。
ctrl+shift+vを押すとコピーしている履歴から貼り付けができます。


それでは今週もこれにてノシ
スポンサーサイト



Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】DoTweenのDoRotateで360度回そうとしたときに回らないやつ。 

こんにちは。

TGS皆さまお疲れ様でした。
毎年いってましたが、今年はいかなかった坂内です。

デジゲーの参加サークルリストも公開されましたね。


そしてもちろんデジゲーは客として遊びにいきます。


Unityの簡単なお話。

DoTweenでCubeをクルクル回そうと思い、こんなコードを書きます。


using UnityEngine;
using DG.Tweening;

public class Test0917 : MonoBehaviour
{
[SerializeField]
Transform cubeTran;

void Start()
{
cubeTran.DORotate(new Vector3(0f,360,0f), 2f).SetLoops(-1, LoopType.Restart).SetEase(Ease.Linear);
}
}





しーーーーーん・・・・・


全然回りません。

こんなことありませんか?

実はこれこんなコードに変えると回るようになります。


using UnityEngine;
using DG.Tweening;

public class Test0917 : MonoBehaviour
{
[SerializeField]
Transform cubeTran;

void Start()
{
cubeTran.DORotate(new Vector3(0f,360,0f), 2f, RotateMode.FastBeyond360).SetLoops(-1, LoopType.Restart).SetEase(Ease.Linear);
}
}






ね。

デフォルトではRotateMode.Fastになっているらしく、こちらは対象の角まで早い方に回るといった感じでしょうか?

ターゲットの角度が360度なので、0度から360度まで最短ルートで回転し、360度以上は回転しないようです。

RotateMode.FastBeyond360は、0度から360度までちゃんと回転し、360度以上でも回るようです。


って感じで、今日は簡単ですが、DoTweenのDoRotateでオブジェクトを回転する方法でした。

あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】Math.Roundで特定の桁を丸めたいとき。 

こんにちは。
大坂です。

以前もMathf.Roundについては書きましたが、特定の桁で丸めたいときとか、前の記事でやってなかったこととか。
【Unity】Mathf.Roundを使ったときの悲しみ

まずは前の記事でやらなかったこと。
Mathf.Floor使って対策しましたがそんなことはしなくても良かったです。。
MathfではなくMathを使ってやる感じですね。
    Debug.Log(Math.Round(1.5f,MidpointRounding.AwayFromZero));
Debug.Log(Math.Round(2.5f,MidpointRounding.AwayFromZero));

「MidpointRounding.AwayFromZero」を引数につけてあげると偶数には寄せなくなります。
結果です。

ちゃんと偶数に寄せられないで四捨五入されますね。

特定の桁で丸めたいときは引数に丸めたい桁数を入れるだけです。
こんな感じ。
    Debug.Log(Math.Round(1.25f,1,MidpointRounding.AwayFromZero));
Debug.Log(Math.Round(1.125f,2,MidpointRounding.AwayFromZero));

結果。

ちゃんと指定した桁までで結果が得られます。

それでは今週もこれにてノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】プレハブを使ってオブジェクトを好きな場所に出す方法。位置調整とかめんどいっすよね・・・・ 

おはようございます。坂内っす。

今日は台風15号のせいで寝不足でございます。

さてUnityの話。

出したい場所にオブジェクトを出す方法について。

【前提】
[画面に出す石の絵のプレハブ]



石のSpriteをつけたuGUIのImageプレハブです。

[画面構成]


[SpawnManager.cs]

using UnityEngine;
using UnityEngine.UI;

public class SpawnManager : MonoBehaviour
{
[SerializeField]
Image stonePrefab;
[SerializeField]
Transform canvasTran;
}



今はまだこれだけ。


【出したい場所にオブジェクトを出す方法 其の1】
座標をそのまま書いちゃう方法。


using UnityEngine;
using UnityEngine.UI;

public class SpawnManager : MonoBehaviour
{
[SerializeField]
Image stonePrefab;
[SerializeField]
Transform canvasTran;

Vector2[] positions = {
new Vector2(100f,100f),
new Vector2(-130f,-250f),
new Vector2(200f,250f)
};

private void Start() {
foreach(Vector2 posi in positions) {
Image img = Instantiate(stonePrefab, canvasTran, false);
img.gameObject.transform.localPosition = posi;
}
}
}





なんかポジション書くのもいいんだけど、どこに出すのかの座標をいちいちやるのはめんどいですよね。
仕様でちゃんと座標指定されているのならばあれですが・・・
あんまり数値をコードに書きたくないっすね。

positionをpublicにしてアサインするのも手ですが。


【出したい場所にオブジェクトを出す方法 其の2】
出したい座標にオブジェクトを置いて出す方法。




こんな感じに、オブジェクトを出したい場所に空のGameObjectを置きます。

[SpawnManager.cs]

using UnityEngine;
using UnityEngine.UI;

public class SpawnManager : MonoBehaviour
{
[SerializeField]
Image stonePrefab;
[SerializeField]
Transform canvasTran;

[SerializeField]
Transform[] trans;

private void Start() {
foreach(Transform tran in trans) {
Image img = Instantiate(stonePrefab, canvasTran, false);
img.gameObject.transform.localPosition = tran.localPosition;
}
}
}


コードをこんな感じにいじります。




Transformをそれぞれアサインします。

これで実行すると、先ほど置いた空のGameObjectの場所にImageのオブジェクトが出ます。


という感じで、大体この2パターンを主流に使ってます。
どちらかといえば最近は2番目の方が多いかな。

これで好きな場所にオブジェクトが出せますね!

では、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】相対パスから絶対パスが欲しいとき 

こんにちは。
大坂です。

ツールを作っていてファイルの相対パスから絶対パスが取得したかったので方法のご紹介。
System.IO.Path.GetFullPathを使うだけなのですごい簡単なんですけどね。

こんな感じで書くだけです。
    string path = "Assets/test/test.txt";
Debug.Log(System.IO.Path.GetFullPath(path));
結果


ということで何かで使うかもしれませんね!
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0