20190625のUnityに関する記事は7件です。

ジャンプしている最中にzキーを押して空中攻撃をする方法

閲覧用1.png
閲覧用2.png
閲覧用3.png
なかなかネットの記事でいい方法が見つからなくてだいぶん苦戦しています。
方法やアドバイスを教えていただけると嬉しいです。
ちなみにジャンプまでの作ったアニメ―ションやコードは画像の通りです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ジャンプしている最中にzキーを押して空中攻撃をする方法知りたいです。[Unity]

閲覧用1.png
閲覧用2.png
閲覧用3.png
なかなかネットの記事でいい方法が見つからなくてだいぶん苦戦しています。
方法やアドバイスを教えていただけると嬉しいです。
ちなみにジャンプまでの作ったアニメ―ションやコードは画像の通りです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unity2018.3以降のPrefab作成

2018.3以降では、NestedPrefab対応でPrefabUtilityが変わっていて、
色々調べたのでPrefabUtilityの使い方のメモとして残しておこうと思います。

#スクリプトからPrefab作成

EditorスクリプトでFBXデータからそのままPrefabを作成する。
2018.2以前はこれでプレファブ作成できた。

old.cs
  var obj = AssetDatabase.LoadAssetAtPath("Asset/fbx.fbx", typeof(GameObject)) as GameObject;
 PrefabUtility.CreatePrefab("Asset/prefab.prefab",obj);
 AssetDatabase.SaveAssets();

ところが、2018.3以降は「PrefabUtility.CreatePrefab()」が非推奨になっていた。
いつなくなるかわからないので、この際新しい書き方に切り替えてみようと思う。

色々試した結果、以下のコードでいけるようだ

new.cs
{
  var obj = AssetDatabase.LoadAssetAtPath("Asset/fbx.fbx", typeof(GameObject)) as GameObject;
  // インスタンス化
  var game = PrefabUtility.InstantiatePrefab(obj) as GameObject;

 // 〜 処理 〜

  // プレファブ作成
  var prefab = PrefabUtility.SaveAsPrefabAsset(game, "Asset/prefab.prefab");
 // リンクを解除
  PrefabUtility.UnpackPrefabInstance(game, PrefabUnpackMode.OutermostRoot, InteractionMode.AutomatedAction);
 // シーンから削除  
 Object.DestroyImmediate(game);
 AssetDatabase.SaveAssets();
}

以前はシーンにインスタンスを作成しなくてもできたが、今回からは一度シーンに作成しないとダメのようなので
最後にシーンから削除するようにした。

ちなみに、リンクについてはあんまりわかっていない。。即反映されるわけでもなさそうだし。。
リンクについては今後調べていこうと思います。

なお、リンクなしでインスタンス化するメソッドもある模様?(インスタンス化時にCloneとつく)

 var game = PrefabUtility.InstantiateAttachedAsset(obj) as GameObject;

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Unityエディタ拡張でサウンド再生を行う

経緯

Unityのエディタ拡張でサウンドコンテナなどを作ってた時に保持したAudioClipの内容を再生したい( 該当AudioClipの場所にInspectorを移動したくない )場合に調べたのでここに共有

ちなみにデフォでサウンドファイル選択時に音声は鳴らせる→ここを参照

スクリプト

AudioClipの再生はここを参考に作成
停止方法が見つからなかったので探してきた

using System;
using UnityEngine;


#if UNITY_EDITOR
using System.Reflection;
using UnityEditor;
#endif


namespace Sample
{
    // SE,BGMの管理用コンテナクラス.
    [System.Serializable]
    public class SampleContainer : ScriptableObject
    {

        // 保持するデータ.
        [SerializeField] AudioClip soundData;


#if UNITY_EDITOR
        // SampleContainerのインスペクタ拡張.
        [CustomEditor(typeof(SampleContainer))]
        class SampleContainerEditor : UnityEditor.Editor
        {

            // インスペクタ描画.
            public override void OnInspectorGUI()
            {
                var data = target as SampleContainer;

                data.soundData = (AudioClip)EditorGUILayout.ObjectField("AudioClip", data.soundData, typeof(AudioClip));

                if (GUILayout.Button("PlayClip"))
                    this.PlayClip(data.soundData);

                if (GUILayout.Button("StopClip"))
                    this.StopClip(data.soundData);
            }


            // エディタ上でのサウンド再生.
            void PlayClip( 
                AudioClip clip)
            {
                if (clip == null) return;

                var unityEditorAssembly = typeof(AudioImporter).Assembly;
                var audioUtilClass = unityEditorAssembly.GetType("UnityEditor.AudioUtil");
                var method = audioUtilClass.GetMethod
                (
                    "PlayClip",
                    BindingFlags.Static | BindingFlags.Public,
                    null,
                    new Type[] {typeof(AudioClip)},
                    null
                );

                method.Invoke(null, new object[] {clip});
            }


            // エディタ上でのサウンドを停止する.
            void StopClip(
                AudioClip clip)
            {
                if (clip == null) return;

                var unityEditorAssembly = typeof(AudioImporter).Assembly;
                var audioUtilClass = unityEditorAssembly.GetType("UnityEditor.AudioUtil");
                var method = audioUtilClass.GetMethod(
                    "StopClip",
                    BindingFlags.Static | BindingFlags.Public,
                    null,
                    new Type[] {typeof(AudioClip)},
                    null
                );

                method.Invoke(null, new object[] {clip});
            }

        }
#endif
    }
}

実行画面

こんな感じ
image.png

ScriptableObjectをインスタンス化してAudioClipを設定して "Play" ボタンを押下すると再生 "Stop" を押下すると停止

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

UnityでビルドしたやつがiOS実機デバッグできなかった件

起こったこと

UnityでビルドしたやつをXcodeで実機デバッグしようとしたら
スクリーンショット 2019-06-25 2.00.31.png
この実機iPhoneの名前横に(unsupported architecture)というのが出てきた。
無理やりビルドするとarm64が云々と言われる。

要は,実機デバッグできなくなったというお話。(iOS simulatorならいける)

解決方法

Unity側の設定がおかしかった。
File>Build Settings開いてPlayer Settings開く。
スクリーンショット 2019-06-25 2.11.17.png

この画面の今選択されてる真ん中のiPhone8以下の機種のマークのOther Settingsを下にずーーーっといくとでてくる,
スクリーンショット 2019-06-25 1.54.42.png
こいつをSimulator SDKからDevice SDKに変更。

???????できた???????

詰まったとこ

しばらくWindows用でビルドしてたりSimulatorで我慢してたりしてた間にXcode色々弄ってたからXcodeが悪いと思い込んでた。Xcodeゴメン。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Xcode10.1 + Unity2018.3.13f1 + GoogleMobileAds3.17.0 + GoogleMobileAdsUnityAdsMediation2.1.0 でclang:-1: linker command failed with exit code 1 (use -v to see invocation)

Build Settings => Build Options => Enable BitcodeをNoにして、Bitcodeを無効にすることで一旦解消することはできた。最新のXcodeであれば出ないのかも(新しいMacBook Pro買いたい・・・)

参考
https://akataworks.hatenadiary.jp/entry/2017/08/22/125403

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Xcode10.1+Unity2018.3.13f1+GoogleMobileAds3.17.0+GoogleMobileAdsUnityAdsMediation2.1.0でclang:-1: linker command failed with exit code 1 (use -v to see invocation)

Build Settings => Build Options => Enable BitcodeをNoにして、Bitcodeを無効にすることで一旦解消することはできた。最新のXcodeであれば出ないのかも(新しいMacBook Pro買いたい・・・)

参考
https://akataworks.hatenadiary.jp/entry/2017/08/22/125403

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む