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やらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】スクリプトを非アクティブで開始してもAwakeって動くんすね。 

こんにちは。
大坂です。

8月ももう終わりですね。
9月になってもうちょっと涼しくなってくれるといいんですが。。

今週も短いネタですが。
内容もタイトルで完結してますが一応。。

書くほどのコードでもないですがこんなコードがあったとして。
public class BlogTest : MonoBehaviour {

void Awake() {
Debug.Log("Awake");
}

void Start() {
Debug.Log("Start");
}

void Update() {
Debug.Log("Update");
}
}


スクリプトを適当なオブジェクトにつけて、非アクティブにしてみて実行すると。





Awakeのログだけ流れますね。
ちょっと試しにいろいろやってた時にAwakeだけ動いたのでメモがてらに書いてみました。

最近ずっと適当ネタしか書いてない気がしますがこの辺で。
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】MathfのRepeat関数を使ってみたよ!意外と便利よね~ 

こんにちは!坂内っす。

色々あってブログ遅れた!そしてネタがないので、さくっと簡単ネタ。

Mathfの話。

色々Mathfって関数ありますよね。
その中で最近使って、「これ楽だわー」って思ったやつを紹介。

【Mathf.Repeat】
リピート関数です。

float Repeat(float a, float length)

aを0からlengthまで繰り返す。

using UnityEngine;

public class RepeatTest : MonoBehaviour {
[SerializeField]
Transform cardTran;
float timer;

void Update () {
timer += Time.deltaTime;
float posiX = Mathf.Repeat(timer, 1.7f);
cardTran.localPosition = new Vector3(posiX,0,0);
}
}


こんな感じの事を書くと、X座標が1.7まで行き、そのあと0に戻ります。



1点注意が必要です。
floatの場合は「lengthまで」ですが、intの場合は「length - 1まで」となります。

Mathf.Repeat(0,5) ⇒ 0
Mathf.Repeat(1,5) ⇒ 1
Mathf.Repeat(2,5) ⇒ 2
Mathf.Repeat(3,5) ⇒ 3
Mathf.Repeat(4,5) ⇒ 4
Mathf.Repeat(5,5) ⇒ 0
Mathf.Repeat(-1,5) ⇒ 4
Mathf.Repeat(-2,5) ⇒ 3
Mathf.Repeat(10,5) ⇒ 0

こんな感じになるのかな。


また、Repeatを使うとページャ(一覧画面とかで、何ページ目みたいなやつ)が簡単に作れますね!

【たとえば.cs】
using UnityEngine;

public class RepeatTest : MonoBehaviour {

int currentPage = 0;
int maxPage = 10;

public void OnClickPrev() {
--currentPage;
Paging();
}

public void OnClickNext() {
++currentPage;
Paging();
}

void Paging() {
currentPage = (int)Mathf.Repeat(currentPage,maxPage);

// currentPageのページ情報を作成&表示
ViewCurrentPage();
}
}


書いてませんが、ViewCurrentPage関数で色々と指定ページの情報を画面に出す処理をする。

前のページボタンを押すと、OnClickPrev()が、
次のページボタンを押すと、OnClickNext()が呼ばれるようにします。

これで簡単にページャができそうですね。

いや、別に「currentPage = maxPage % currentPage」とかでもいいんですけどね~

ということで、簡単ではありますが、Mathf.Repeatの使い方でした!

ではあでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】C#の関数を知らないで無駄なことを書くことが多い。 

こんにちは。
大坂です。

今週もブログが書く日が来たので何とか書いていきますよ。

そしてタイトル通りですが、
あんまり関数を調べないで知ってるやつで強引に書こうとするので無駄な感じで書くことが多いです。

一例ですけど、
メッセージため込んで順番に出したいときとかに何も考えずに
こんな風にListを使ってやってたりしてるときが多いですが。。
    List<string> messageList = new List();
messageList.Add("Message_1");
messageList.Add("Message_2");
messageList.Add("Message_3");

while(messageList.Count > 0) {
Debug.Log(messageList[0]);
messageList.RemoveAt(0);
}


Queueクラス使った方が消す処理とか書かなくていいよねって話。
まぁこの場合1行しか変わりませんけど。
    Queue messageList = new Queue();
messageList.Enqueue("Message_1");
messageList.Enqueue("Message_2");
messageList.Enqueue("Message_3");

while(messageList.Count > 0) {
Debug.Log(messageList.Dequeue());
}


ということでやりたいことに対して関数あるか調べる癖をつけたいなぁと思った瞬間でした。
メモにもなっていないような記事でしたが、これで終わりですよ。

ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】Unity2Dでカードを回転させて裏から表にする方法。こんな感じでできますよん♪ 

皆様御機嫌いかがでしょうか?
こんにちは。坂内です。

最近金がマジやばいんで受託して生きています。
何をしてでも生きていきましょう!転職はする予定はないですが。

さて、ちょっとしたUnityの小ネタを。

裏のカードを回転して表にする方法。
ゲームとかでたまにカード使ったりしますよね。

こんな感じで。



3Dなら簡単だと思うんですが、2Dでやるとするとカード(ImageやSpriteRenderer)に裏・表という概念がないため、「裏返しする」といった事はできません。

では、どうやるのかというと、
①カードを90度回転
②カードの絵を表の絵(スーツとか絵が描いてる方ね)に変更
③カードを90度戻す
この一連の流れをすると、上の動画みたいにカードが裏返ったように見えます。

それでは実際のコードとかを書いていきますね。

ResourceフォルダにCardsというフォルダを作成し、そこにトランプの表の絵を置いておきます。
(Resourceフォルダはあんまり使わない方がいいらしいですが・・・)




コードはこちら。

【CardTest.cs】
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class CardTest : MonoBehaviour {

public Image imgCard;

string[] suits = {"c","d","h","s"};

public void OpenCard() {
string card;
// スーツ
card = suits[Random.Range(0,suits.Length)];
// No
card += Random.Range(1,14).ToString("00");

imgCard.transform.DOLocalRotate(new Vector3(0, 90, 0), 0.6f)
.SetEase(Ease.Linear).OnComplete(() => ChangeCard(card));
}

void ChangeCard(string cardNo) {
imgCard.sprite = Resources.Load<Sprite>("Cards/" + cardNo);
imgCard.transform.DOLocalRotate(new Vector3(0, 0, 0), 0.6f).SetEase(Ease.Linear);
}
}


こんな感じで簡単にできますので、是非やってみてください!

ということで、小ネタでしたが、今日のところはこんな感じでおさらばです。あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 2   

【ハルシオンブログ】何も思いつかないので普段使ってるけど書いてないちょっとした小ネタを… 

こんにちは。
大坂です。

なんか台風が19号とかまで発生してるんですね。
つい最近13号がーとか言ってた気がしたんですが…。

さてはて、ネタを何も思いつかなかったのでちょっとした機能ネタを2個。

①ドラッグ&ドロップのキャンセル
UnityEditor上でプレハブとかをドラッグ&ドロップしようとしたけどやっぱりやめたいときは、
ESCキーでキャンセルできるよって話。
一回置いて消したり、停止マークのところでドロップしてもいいんですけど、機能としてあるので使ってます。
見てもわかりにくいですがこんな感じですね。


②Visual Studioの上書きモード機能削除
押したつもりがなくてもInsertキー押して上書きモードになってたりするとイラッとすることがるので機能ごと削除する方法。
[ツール]-[オブション]を開いて[キーボード]を選択。
以下の文字列を含むコマンドを表示に「上書きモード」と入力。
「編集,上書きモード」を選択して削除ボタンを押す。


これでInsertキーを押しても上書きモードにならなくなりますね。
僕は上書きモードを使うことがないのでこの機能は削除してます。

では今週もこんな感じで終わりです。
ではまたノシ

Category: 開発日記(Unity)

tb 0 : cm 0