20210107のUnityに関する記事は4件です。

Unityで格闘ゲームを作った話

Unityを使って格闘系作ったことそういえばないなぁと思い、作り始めてしまいましたw

環境

OS:Windows10
Unityのバージョン:2018.4.11f1
プログラムエディタ:Visual Studio

本文

ほんじゃあ本文入っていくよー
Desktop Screenshot 2021.01.07 - 13.27.02.11.png
最初はこのように何もないわけですよ
でもここにプレイヤーや、ステージを配置します。
手始めに簡単なものを作りましょう。Desktop Screenshot 2021.01.07 - 13.35.08.96.png
どうでしょうか、短時間でこのようなものが作れます!
後はプログラムを記述するとプレイヤーが動きます!
Programming.gif
このようなゲームができます!!Game.gif
こんな感じの格闘ゲームができました!

何を使ったか

Unityというすげぇフリーゲーム作りソフトです。
個人的な用途から企業で使われることも!
www.unity.com
上のリンクがUnityです。

そしてそいつを使ってオブジェクトの作成、背景の描写、
キー入力の受付、物理プログラムと言ったものを用意してくれます。
プログラムは、C-Sharp(C#)というプログラミング言語(コンピューター内の言語のようなもの)
を使ってプログラムを書いています。

ちなみにプログラムを書いたツールは、"環境"で言った、Visual Studioです。
マイクロソフトが作ったエディタです。

役割としては、
Visual Studio - テキストエディタ
Unity - ゲーム作りの環境
C-Sharp - これがなければUnityは動作しない
みたいな感じです。
それではまた別の記事で

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

【Unity】UIBuilderでInlineStyle設定を削除する方法

UI Toolkitを使う上でUIBuilderの存在は欠かせません。

手書きでUXMLを書いても良いですが、UIBuilderの方が何倍も早くそして正確です。オペミスの心配もありません。

UI要素を追加し、その要素に対してIDまたはclassを設定します。
その後USSで装飾をするわけですが、間違えてInlined Stylesを設定してしまう時があります。

Inlined Stylesが優先されるため、その後USSをいくら書き換えても反映しません。とてもハマります。

そのUXMLの中身を確認してInlineStyleを手作業で削除するわけです。

Sample.uxml
<ui:UXML xmlns:ui="UnityEngine.UIElements" engine="UnityEngine.UIElements" editor-extension-mode="False">
    <Style src="Common.uss" />
    <ui:VisualElement class="bg" style="height: 100%; width: 100%;" />
</ui:UXML>

上記のサンプルコードの中でInlined Stylesはstyle="height: 100%; width: 100%;"です。

ただし、本記事のタイトルの通りUIBuilder上でも出来たのでその共有となります。

コンテキストメニューから「Unset」または「UnsetAll」


UIBuilder上でInlined Stylesは上の画像の通りマークが付き太字で記述されます。

右クリックでコンテキストメニューを出すと

  • Unset・・・・指定したStyleを削除
  • UnsetAll・・・全Styleを削除

このどちらかが選ぶだけです。

以上です。

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

[Unity] Prime31(ios)でのandroidのビルドエラー

状況

UnityにPrime13(iOS : Etcetera Plugin)を追加した。
iosでのビルドは問題なくできたが、androidのビルド時にエラーが起きた

エラー内容

What went wrong:

Execution failed for task ':launcher:processReleaseResources'.

Android resource linking failed

/Users/ユーザー名/Desktop/Unity/プロジェクト名/Temp/gradleOut/launcher/build/intermediates/merged_manifests/release/AndroidManifest.xml:52: AAPT: error: unexpected element found in .

解決法

プロジェクトファイル内の AndroidManifest.xml のコードを変えた

(変更前)AndroidManifest.xml
<manifest>
  <application android:label="@string/app_name" android:hasCode="false" android:debuggable="false">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
  </application>
</manifest>
(変更後)AndroidManifest.xml
<manifest>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <application android:label="@string/app_name" android:hasCode="false" android:debuggable="false">
    ...
  </application>
</manifest>

注意点

プロジェクト名/Assets/Plugins/Android/AndroidManifest.xml
AndroidManifest.xml のファイルを変更する。
エラーログにあるパスのAndroidManifest.xmlファイルを変更してもビルド時に元通りになってしまう。

似たビルドエラー

【Unity】Androidビルドでエラー"maxAspectRatio not found"

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

[Editor拡張] InspectorにUI取得ボタンを表示して押したらUIを取得

使用すると下画像のようにInspectorにボタンを追加します。

スクリーンショット 2021-01-07 0.19.35.png

以下 サンプルコード

Sample.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

namespace Test
{
    public class Sample : MonoBehaviour
    {
#if UNITY_EDITOR
        public void SetInspectorUI()
        {
                // ここに処理を記載
                Debug.Log("On Click");
        }
#endif
    }

#if UNITY_EDITOR
    [CustomEditor(typeof(Sample))]
    public class SampleEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            if (GUILayout.Button("UI要素を取得"))
            {
                SetInspectorUI();
            }
        }

        private void SetInspectorUI()
        {
            Sample t = target as Sample;
            t.SetInspectorUI();
        }
    }
#endif
}

UIを取得するならこういう書き方かな?というサンプル

Sample.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
#if UNITY_EDITOR
using UnityEditor;
#endif

namespace Test
{
    public class Sample : MonoBehaviour
    {
        public Text A;
        public Text B;
        public Text C;

#if UNITY_EDITOR
        public void SetInspectorUI()
        {
            var texts = GetComponentsInChildren<Text>();

            foreach (var t in texts)
            {
                if (t.name == "A")
                {
                    A = t;
                }
                else if (t.name == "B")
                {
                    B = t;
                }
                else if (t.name == "C")
                {
                    C = t;
                }
            }
        }
#endif
    }

#if UNITY_EDITOR
    [CustomEditor(typeof(Sample))]
    public class SampleEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            if (GUILayout.Button("UI要素を取得"))
            {
                SetInspectorUI();
            }
        }

        private void SetInspectorUI()
        {
            Sample t = target as Sample;
            t.SetInspectorUI();
        }
    }
#endif
}

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