FC2ブログ
    10 «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.» 12

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

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

     

    【ハルシオンブログ】Jsonで配列を扱いたいとき。 

    こんにちは。
    大坂です。

    今日で11月も終わりですね…。
    今年もあと1ヵ月です…orz

    さて今日の小ネタ。
    以前JsonUtilityの記事を書いてますが、配列を扱いたいときのJsonファイルとクラスの書き方。

    Jsonから。
    {"userData":[
    {
    "name":"よしだ",
    "age":18
    },
    {
    "name":"はるお",
    "age":20
    }
    ]}

    最初に「"userData":[」で配列指定。

    受け取るクラス。
        [Serializable]
    public class Users {
    public string name;
    public int age;
    }

    [Serializable]
    public class UserList {
    public Users[] userData;
    }

    void Start() {
    StartCoroutine(JsonTest());
    }

    private IEnumerator JsonTest() {
    WWW www = new WWW(jsonUrl);
    yield return www;

    UserList userList = JsonUtility.FromJson<UserList>(www.text);

    for(int i = 0; i < userList.userData.Length; i++) {
    Debug.Log(userList.userData[i].name);
    Debug.Log(userList.userData[i].age);
    }
    }

    こんな感じですね。
    配列の中の細かいクラスと配列を入れるクラスを作ってあげれば受け取れます。

    一応結果。

    ちゃんと全部取れてますね。

    では今日もこれにて。
    またノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】PCクリーンインストールして、Unity再インストールしたらAndroidのビルドができなかったんすよ。 

    こんにちは!坂内っす。

    もう12月になろうとしています。今年も終わりですね・・・すげー早かった...
    やばいっすね。ハクスラ全然終わりません。
    め、めざせ3月リリース!

    ところで、今使ってるPCのWindowsをクリーンインストールしたんですよ。
    そしたらUnityでAndroidのAPKが作れないって状態に陥って・・・

    もちろんAndroidSDKもJavaのJDKも最新入れたんですよ!

    こんなエラーがでるんです!

    CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details. 
    C:/Program Files/Java/jdk●.●.●_●\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:\Users\●●●\AppData\Local\Android\Sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -
    stderr[
    Error:Invalid command android
    ]
    stdout[
    ]
    exit code: 64
    UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
    UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
    UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
    UnityEditor.HostView:OnGUI()



    あれ~~???


    JDKのバージョンが最新だと「jdk-9.0.1」ってなってるんですよね。(2017年11月27日現在)
    これがだめで、「jdk1.8.0_151」を落としてUnityからパス設定したら無事ビルドできました!!

    なんすかねJDK9って…

    あ、それとAndroidStudioのAndroidSDKもダメって話聞きますよね。

    これも一応古いのに変えたんすけどね・・・・・どっちがダメなのか、どっちもダメだったのかはもうわかりません...

    新しくUnityインストールする人やクリーンインストールする方はこの辺注意してくださいね!

    それでは!あでゅ~

    Category: その他日記

    tb 0 : cm 0   

    【ハルシオンブログ】プレハブ更新の小ネタ。 

    こんにちは。
    大坂です。

    なぜか朝から鼻水が止まりません…花粉…?

    さて、タイトル通りの小ネタです。
    プレハブに手を入れてて更新するときは更新後にInspectorのApplyボタンを押しますね。

    このボタン。


    流石にこれではネタにもならないのでもう少し。
    プレハブの下にプレハブを入れるような構成で子供にしているプレハブの更新をしたいのに
    親にしているプレハブでApplyボタンを押して更新したときの対処。
    こんな感じの構成。


    この時に「Prefab_2」の更新をしたのに「Prefab_1」でApplyを押しちゃったときですね。
    こうなりますね。


    この後に「Prefab_2」でApplyボタンを押しても「Prefab_2」単体のほうは更新されません。
    この場合はHierarchyの「Prefab_2」をProjectの「Prefab_2」にドラッグアンドドロップしてあげると切り離してくれます。


    こんなポップアップが出るのでReplace anywayを押す。


    切り離されたらHierarchyで子供にしている方を消して親にしている方をApplyボタンを押したらいいですね。


    ついでにもう1個。
    実行中にプレハブの内容を更新して反映したい場合に実行中だとApplyボタンが出てきませんが、
    Projctの方の対象プレハブにドラッグアンドドロップしてあげればちゃんと更新されます!

    大したことないネタですがこれで終わりです。。
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】小ネタ2個だけ。(ネタ不足) 

    こんにちは!坂内っす。

    元気にUnityしてますかー!?

    今日書くネタがないので、メモをちょこっと。
    【小ネタ1】


    public Sprite[] sprites;
    public enum IMAG_TYPE{
    IMG_A,
    IMG_B,
    IMG_C,
    };

    public void SetImage(IMAG_TYPE type){
    switch(type){
    case IMAG_TYPE.IMG_A:
    imgObj.sprite = sprites[0];
    break;
    case IMAG_TYPE.IMG_B:
    imgObj.sprite = sprites[1];
    break;
    case IMAG_TYPE.IMG_C:
    imgObj.sprite = sprites[2];
    break;
    }
    }



    こんなプログラム見ることありますよね。(某本にかいてました)

    これって、こう書けば楽っすよ。


    public Sprite[] sprites;
    public enum IMAG_TYPE{
    IMG_A,
    IMG_B,
    IMG_C,
    };

    public void SetImage(IMAG_TYPE type){
    imgObj.sprite = sprites[(int)type];
    }



    ほら簡単。

    【小ネタ2】
     Dotweenを使ったフェード
     
     ①DOTween.To(() => imageObj.color.a,(x) => imageObj.color = new Color(255,255,255,x),1,2f).SetEase(Ease.Linear);
     2秒かけて透明度を1にする(フェードイン)

     ②DOTween.To(() => imageObj.color.a,(x) => imageObj.color = new Color(255,255,255,x),0,1f).SetEase(Ease.Linear);
     1秒かけて透明度を0にする(フェードアウト)
     

    ネタ不足です。あでゅ~ノシ
     

    Category: 開発日記(Unity)

    tb 0 : cm 1   

    【ハルシオンブログ】週単位で何かしたいときに現在週の月曜日がほしかったよ。 

    こんにちは。
    大坂です。

    風邪をひいて治りそうなときにまた出かけて悪化するのを繰り返してます…orz
    しばらくおとなしくしていた方がよさそうです。。

    そして何もネタがなかったので超短いです。

    タイトルの通りですが、週単位にミッションとか作り直すときに現在日の週の月曜日がほしかったので取得方法。
    といっても簡単なんですけど…。

    // 現在日付
    System.DateTime nowDate = System.DateTime.Now;
    // 月曜(1)から現在日付の曜日の差分を出す
    int diff = System.DayOfWeek.Monday - nowDate.DayOfWeek;
    // 差分が+だったときの対策(今回の場合は日曜日)
    if(diff > 0) {
    diff -= 7;
    }
    // 現在日付に差分を足す(差分はマイナスになるから結果的に引く)
    System.DateTime monday = nowDate.AddDays(diff);

    こんな感じで月曜日の日付を取得できますね。
    あとはこれを保存しておいて比べるときにAddDays(7)とかして翌週の月曜日の日付として比べてあげれば、
    何となくやりたいことはできる気がしました!

    ということで適当ですが終わりです!
    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】デジゲー博2017いってきたよ!写真撮ってきたけど…適当すぎる感がすごい!飲みお疲れ様でしたー! 

    こんちは!坂内っす。

    11月12日はデジゲー博2017の日でした!
    http://digigame-expo.org/
    デジゲーってインディーズゲームの祭典みたいな?
    色々なインディーズなゲームを試遊できるイベントっす。



    今回はいくつか見ようと思ってたブースがあったのですが、広すぎブース多すぎでどこに行こうとしてたのか分からなくなりましたよ!
    ってことで、とりあえず寄って写真撮ってきたの晒上げておこうと思います。

    まずはSeventhRankさんの「World for Two」です。

    え?なんのゲームか分からない?


    記念に写真撮ってるだけで、こだわりあって撮ってるわけじゃないっすからね。
    いくつか他で記事にもなってるので、ゲーム内容はそっちみてね!

    はい、次。
    スカシウマラボさんのサムライ地獄ですね。

    (ゲーム画面全然映してねえ)
    よくできてるんすよ?
    リリースしたらやりましょ。


    はい、次。
    Room6さん。

    あれ?「でっかわ彼女」のブース…等身大パネルあったんだけど、人多くて写真撮ってないや。(∀`*ゞ)テヘッ
    なんだかわからない写真ばっかり撮ってますね。
    Room6さんはデザイナーのみなさん可愛くていけませんね。

    次は「MissleMan」のGAME OR DIEさんブース。

    今回は新しい「侍JET」というアプリを展示してましたよ!
    動きが気持ちいいスワイプアクション的な感じでしたね!
    面白かった!

    CretiaStudioさんの「脱出探偵少女」

    すごいクオリティで絶対楽しい!!(POP会で触ってるので知ってる)
    よくできてるんだよなぁー

    他にもいろいろなブースにお邪魔しました!

    結局知り合いのブースばっかりしか行ってないやん!って感じでした。。。

    さてデジゲー博の後に適当に飲み会をしようとTwitterで集めてたら約80人集まってビビってましたよ。
    https://atnd.org/events/91621?k=fea160c5c144975c364241ea569cffdd

    半分くらい会ったことない方達で、とても新鮮な飲みになりました!
    色々繋がりできるのはいいっすね!
    ドタキャン怖かったけど、みんなちゃんと来てくれて、ほんと助かりました!
    適当な幹事ですんません(∀`*ゞ)テヘッ
    皆さん楽しんでいたみたいでよかったです!また機会あったら大人数飲みやりまっす!

    その後は10人くらいで2次会へ


    帰りはぐったりでした(笑)

    ブース出してる皆さんほんとお疲れ様でした!

    楽しいデジゲーでしたー!

    あでゅ~ノシ

    Category: その他日記

    tb 0 : cm 0   

    【ハルシオンブログ】シーンの保存を忘れたままGitにプッシュすることが多いので、Editorでゲームを再生時に保存されるようにしてみたよ。 

    こんにちは。
    大坂です。

    風邪をもらって、順調に悪化しています…。
    皆さんも体調にはお気を付けを…。

    タイトルの通りですが、どうにもシーン保存しないでGitにあげることが多いです…。
    よくわからないプレハブとか置きっぱなしになってたり…。

    ということで変更したら再生はするのでその時にシーンとかを保存してやればいいということで試してみた。

    コード。EditorスクリプトなのでAssets-Editorの下に入れる感じ。
    using UnityEngine;
    using UnityEditor;
    using UnityEditor.SceneManagement;

    [InitializeOnLoad]
    public class SaveSample {

    static SaveSample() {
    // イベントの登録
    EditorApplication.playmodeStateChanged += OnPlayingStateChanged;
    }

    public static void OnPlayingStateChanged() {
    // プレイ中ではなく、エディターが現在再生モードか、再生モードに切り替えようとしている場合
    if(!EditorApplication.isPlaying && EditorApplication.isPlayingOrWillChangePlaymode) {
    // アクティブなシーンを保存
    EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene());
    // アセットの保存
    AssetDatabase.SaveAssets();
    }
    }
    }

    再生したときに無事にシーンとアセットが保存されました。
    これで保存の忘れも多分なくなるので安心ですね!

    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Unityで宴を使ったとき、uGUIのオブジェクトが表にあってタップで文字送りができないよーうorz の解決法? 

    こんつわ。坂内っす。

    今週末ついにデジゲー博ですね!
    出展のみなさん頑張って!

    さて、Unityでゲームを作っていて、会話シーンなどに宴を使う場合、こんなことが起きたりします。



    え?何が起きてるかって?

    どこを押しても文字送りができなんです。

    どういう状態かというと、uGUIで白い板(background)を置き、宴のシナリオを呼んだけです。



    タップしての文字送りの判定がManageres>Cameras>ClearCameraあたりにあるぽい(?)ので、このカメラを白い板の置かれているCanvasより表に置かないといけないらしいっす。

    ってことで、以下の変更をするとうまくいきますよ。

    ①ClearCameraのClearFlagsを「SolidColor」⇒「DepthOnly」へ変更。
    ②ClearCameraのDepthを「-10」⇒「白い板のCameraのDepthより大きい数値」へ変更。
    ③ClearCamera>Canvas-BackGround>ImageのColorの透明度を「255」⇒「0」へ変更。

    ってことをすると、以下のようになります。



    また、キャラを宴で表示すると、Manageres>Cameras>SpriteCamera>SpriteCameraの子供として絵が表示されるので、このCameraのDepthも変更しないと、白い板の裏にキャラが表示されたりします。

    この辺もっと簡単にできたりするんですかね?

    あんまり宴の説明書読んでないので、やり方あるのかもしれませんが…

    ってことで、この辺をいじって素敵な宴ライフを!!

    あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    【ハルシオンブログ】Text作った時のデフォルトフォントを変えたいとき 

    こんにちは。
    大坂です。

    明日は文化の日らしいですよ。
    何やら今日予定を入れてくる人がいると思ったら明日休みらしいです。

    さて、今日のネタですが、Textのオブジェクトを作った時に毎回フォントの設定変えるのが面倒になってくるのでそんなときの対策。
    普通に作るテキストのデフォルトはどうやって変えられるのかわからなかったので、カスタムしたやつをメニューに追加する方針。

    コードはこんな感じ。「Assets/Editor」の下に入れる。
    using UnityEngine;
    using UnityEngine.UI;
    using UnityEditor;

    public class CustomText : MonoBehaviour {

    // 右クリックメニューのUIの中に追加
    [UnityEditor.MenuItem("GameObject/UI/CustomText")]
    public static void CreateCustomizedText() {
    // オブジェクトの作成
    GameObject textObj = new GameObject("Text", typeof(Text));
    textObj.transform.localPosition = Vector3.zero;
    textObj.transform.localScale = Vector3.one;

    Text text = textObj.GetComponent<Text>();

    // Asset/Fontの下にあるフォントを検索(違うフォルダに入れている場合は変更)
    string[] fonts = AssetDatabase.FindAssets("t:Font", new string[] { "Assets/Font" });

    if(fonts != null && fonts.Length > 0) {
    // フォントの設定
    Font font = AssetDatabase.LoadAssetAtPath<Font>(AssetDatabase.GUIDToAssetPath(fonts[0]));
    text.font = font;
    } else {
    // なければArialを設定しておく
    text.font = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font;
    }
    // テキストの初期値
    text.text = "New Text";
    // テキストの色
    text.color = Color.black;

    // 右クリックしたオブジェクトを親にする
    if(Selection.activeGameObject) {
    GameObject parentObj = Selection.activeGameObject;
    textObj.transform.SetParent(parentObj.transform, false);
    textObj.layer = parentObj.layer;
    textObj.isStatic = parentObj.isStatic;
    }
    }
    }

    Assets/Fontフォルダを作成して設定したいフォントを入れる。


    これでHierarchyでの右クリックメニューのUIの中に「CustomText」が追加されます。


    これで作ってあげるとちゃんとAssets/Fontの中に入れた「Font」が設定されてますね。


    と、こんな感じで対応できるみたいなので、何かのお役に立てばいいですね!

    ではまたノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0