- 投稿日:2021-01-07T15:30:38+09:00
Unityで格闘ゲームを作った話
Unityを使って格闘系作ったことそういえばないなぁと思い、作り始めてしまいましたw
環境
OS:Windows10
Unityのバージョン:2018.4.11f1
プログラムエディタ:Visual Studio本文
ほんじゃあ本文入っていくよー
最初はこのように何もないわけですよ
でもここにプレイヤーや、ステージを配置します。
手始めに簡単なものを作りましょう。
どうでしょうか、短時間でこのようなものが作れます!
後はプログラムを記述するとプレイヤーが動きます!
このようなゲームができます!!
こんな感じの格闘ゲームができました!何を使ったか
Unityというすげぇフリーゲーム作りソフトです。
個人的な用途から企業で使われることも!
www.unity.com
上のリンクがUnityです。そしてそいつを使ってオブジェクトの作成、背景の描写、
キー入力の受付、物理プログラムと言ったものを用意してくれます。
プログラムは、C-Sharp(C#)というプログラミング言語(コンピューター内の言語のようなもの)
を使ってプログラムを書いています。ちなみにプログラムを書いたツールは、"環境"で言った、Visual Studioです。
マイクロソフトが作ったエディタです。役割としては、
Visual Studio - テキストエディタ
Unity - ゲーム作りの環境
C-Sharp - これがなければUnityは動作しない
みたいな感じです。
それではまた別の記事で
- 投稿日:2021-01-07T09:53:21+09:00
【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を削除
このどちらかが選ぶだけです。
以上です。
- 投稿日:2021-01-07T01:17:32+09:00
[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
ファイルを変更してもビルド時に元通りになってしまう。似たビルドエラー
- 投稿日:2021-01-07T00:22:02+09:00
[Editor拡張] InspectorにUI取得ボタンを表示して押したらUIを取得
使用すると下画像のようにInspectorにボタンを追加します。
以下 サンプルコード
Sample.csusing 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.csusing 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 }