Skip to content

Instantly share code, notes, and snippets.

View TsubameUnity's full-sized avatar

Tsubame TsubameUnity

View GitHub Profile
@TsubameUnity
TsubameUnity / ObjectDeplicate
Last active August 27, 2018 13:32
http://tsubakit1.hateblo.jp/entry/2017/04/28/005237 の処理改良版(プレハブがプレハブ参照のまま複製可能)
using UnityEngine;
using UnityEditor;
using System.Linq;
public class ObjectDeplicate {
[MenuItem("Edit/DummyDeplicate %d", false, -1)]
static void CreateEmptyObject() {
var select = Selection.objects;
// Projectのオブジェクトのコピー
@TsubameUnity
TsubameUnity / StopExcuteIfHotReloading
Created December 18, 2018 01:34
ゲーム実行中にスクリプト変更した場合、ゲーム実行を停止させるエディタ拡張
using UnityEngine;
using UnityEditor;
public class StopExcuteIfHotReloading {
[RuntimeInitializeOnLoadMethod]
static void StartUp() {
EditorApplication.update += EditorUpdate;
}
static void EditorUpdate() {
if (EditorApplication.isPlaying && EditorApplication.isCompiling) {
@TsubameUnity
TsubameUnity / TransformInspectorEx
Last active March 4, 2019 03:51
Transformのインスペクタ表示に、一括入力ボタンを表示させるエディタ拡張。一括入力ウィンドウを開いているときにEnterで入力を確定、ESCで入力をキャンセルが可能です。
using UnityEngine;
using UnityEditor;
using System;
namespace TransformEx
{
/// <summary>
/// 一括表示を行う場合の設定項目
/// </summary>
internal interface ISetAllMode
@TsubameUnity
TsubameUnity / PlatformTool
Last active March 19, 2019 03:49
[Unity 2019.1.0b5で確認] エディタのツールバーにAndroidビルド、インストール、実行を行うボタンを追加するスクリプト
using System;
using UnityEngine;
using UnityEditor;
using UnityEditor.EditorTools;
using System.IO;
using UnityEditor.Build.Reporting;
using System.Linq;
// 初回起動のみ実行、初回のツールバー設定で起動しないように仕組む
class PlatformToolInitializer : ScriptableSingleton<PlatformToolInitializer>
@TsubameUnity
TsubameUnity / ShapePropertyNameAttribute
Last active March 20, 2019 04:43
シリアライズしたプロパティの名前を自動で整形します。使い方はこんな感じ。[field: SerializeField, ShapePropertyName] public string Property { get; set; }
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
class ShapePropertyNameAttribute : PropertyAttribute
{
#if UNITY_EDITOR
[CustomPropertyDrawer(typeof(ShapePropertyNameAttribute))]
class FieldNameDrawer : PropertyDrawer
@TsubameUnity
TsubameUnity / SceneAttribute.cs
Last active April 5, 2019 05:16
ビルドシーンに一覧からシーン選択できるアトリビュート。登録シーンが消えても手動で変更するまで保持します
using System.Linq;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
class SceneAttribute : PropertyAttribute
{
}
@TsubameUnity
TsubameUnity / ButtonTextCustomer
Last active November 8, 2019 07:04
ボタンを操作できるようにラップしたもの。スクリプトを追加すれば[UI/Button]を呼び出したのと同等の処理を行う。
using UnityEngine;
using UnityEngine.UI;
using System.Reflection;
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.UI;
using UnityEditor.SceneManagement;
#endif
@TsubameUnity
TsubameUnity / GUIStyleViewer.cs
Last active July 3, 2020 03:35
UnityタブのTools/GUIStyleの確認から、Unity内部にあるGUIStyleの一覧を確認、表示、動作確認をできるようにするエディタ拡張。
// GUIStyleの名前部分は選択してコピーができます。
// キー入力でウィンドウの操作が可能です。
// 左右キー:ページの移動
// 上下キー:スクロールの移動
// Enter:検索にフォーカスを移動
// Shift + 左右キー:GUIStyleの表示数を変更
// Ctrl + 左右キー:GUIStyleの表示分割数を変更
// Shift + Tab:Toolbarの切り替え
@TsubameUnity
TsubameUnity / ApkBuildAndInstall.cs
Last active July 30, 2019 05:50
Apkのビルドとインストールをメニューから選択orショートカットキーで出来るようにする
public class ApkBuildAndInstall
{
[MenuItem("ビルド/APK BuildInstall #b")]
static void BuildInstallApk()
{
var path = System.Environment.CurrentDirectory;
var fullPath = Path.Combine(path, "test.apk");
var levels = EditorBuildSettings.scenes.Where(x => x.enabled).Select(x => x.path).ToArray();
PlayerSettings.SetScriptingBackend(EditorUserBuildSettings.selectedBuildTargetGroup, ScriptingImplementation.Mono2x);
@TsubameUnity
TsubameUnity / AABBuildAndInstall.cs
Last active July 29, 2019 09:29
64bit対応AAB書き出し後apkインストール用(BundleToolPathは https://github.com/google/bundletool/releasesよりjarをDLして配置)
public class AABBuildAndInstall{
[MenuItem("ビルド/AAB BuildInstall #&b")]
static void BuildInstallAAB()
{
var path = System.Environment.CurrentDirectory;
var fullPath = Path.Combine(path, AABName);
var levels = EditorBuildSettings.scenes.Where(x => x.enabled).Select(x => x.path).ToArray();
PlayerSettings.SetScriptingBackend(EditorUserBuildSettings.selectedBuildTargetGroup, ScriptingImplementation.IL2CPP);
PlayerSettings.Android.targetArchitectures = AndroidArchitecture.All;