読者です 読者をやめる 読者になる 読者になる

コガネブログ

平日更新を目標にUnityやC#などのゲーム開発アレコレを書いていきます

【Unity】ネットワークにアクセス可能かどうかを取得する方法

Application.internetReachability を使用する switch ( Application.internetReachability ) { case NetworkReachability.NotReachable: Debug.Log( "ネットワークが使えない" ); break; case NetworkReachability.ReachableViaCarrierDataNetwork: Debug.L…

【Unity】Unityプロジェクトを5.3から5.4にアップデートしたらシーン遷移時にフリーズする現象が発生するようになった場合の対応方法

Unityを終了しておく Unityプロジェクト直下の下記のフォルダを削除する Library Temp Unityプロジェクトを開く

【Unity】「DontDestroyOnLoad only work for root GameObjects or components on root GameObjects.」

子オブジェクトに対して DontDestroyOnLoad 関数を使用すると表示される警告 DontDestroyOnLoad 関数はルートのオブジェクトにのみ使用可能

【Unity】AnimatorでTime.timeScaleを無視する方法

updateMode プロパティを使用する // タイムスケールを考慮する animator.updateMode = AnimatorUpdateMode.Normal; // タイムスケールを無視する animator.updateMode = AnimatorUpdateMode.UnscaledTime; 参考サイト様

【Unity】DOTweenでTime.timeScaleを無視する方法

SetUpdate 関数を使用する DOTween .To( value => { }, 0, 1, 1 ) .SetUpdate( true ) ; 参考サイト様

【Unity】Time.timeScaleを無視したdeltaTimeを取得する方法

Time.unscaledDeltaTime を使用する Debug.Log( Time.unscaledDeltaTime ); 参考サイト様

【Unity】UnityでLuaを使用できるようにする「slua」を触ってみる

http://www.slua.net/ 「slua」はUnityでLuaを使用できるようにするアセットです 前回紹介した「MoonSharp」は LuaからUnityのAPIを呼び出すことができなかったですが こちらの「slua」は呼び出すことができるようです 特徴(公式サイトから引用) static co…

【Unity】UnityでLuaを使用できるようにする「MoonSharp」を触ってみる

MoonSharp 「MoonSharp」はUnityでLuaを使用できるようにするアセットです 検証環境 MoonSharp:1.5.0.1 Unity:5.2.3p3 Xcode:6.2.3 Android:5.0.1 iOS:8.2 導入方法 「http://www.moonsharp.org/」を開く 「Zip file」を選択して「moonsharp_release_1.…

【Unity】FileUtil.GetProjectRelativePathでプロジェクトからの相対パスを取得する

var path = ""; Debug.Log( FileUtil.GetProjectRelativePath( path ) ); FileUtil.GetProjectRelativePathを使用することで 指定したファイルのプロジェクトからの相対パスを取得することができます

【Unity】NGUIのUISpriteをUIWidgetに置き換えるコンテキストメニューを追加するエディタ拡張

【Unity】Mathf.Clampの拡張メソッド

using UnityEngine; public static class IntExtensions { public static float Clamp( this int value, int min, int max ) { return Mathf.Clamp( value, min, max ); } } public static class FloatExtensions { public static float Clamp( this float v…

【Unity】UnityEditor.TextureUtilを使う

【Unity】NGUIのUISpriteに有効なスプライト名が設定されているかどうかを確認する拡張メソッド

using System.Linq; public static class UISpriteExtensions { /// <summary> /// 有効なスプライト名が設定されている場合 true を返します /// </summary> public static bool IsValidSpriteName( this UISprite self ) { var spriteName = self.spriteName; var spriteList …

【Unity】「UnityVS」をインポートしているプロジェクトはエディタ再生時にPlayerSettingsの「Run In Background」が自動でオンになる

「UnityVS」をインポートしているプロジェクトで OnApplicationPauseの動作確認をしようとした時に遭遇しました アプリのサスペンドレジューム時の動作確認をしたい時は 「UnityVS」をプロジェクトから削除する必要があるかもしれません Unity 停止時 Unity …

【Unity】UnauthorizedAccessException: Access to the path "Library\UnityAssemblies\UnityEngine.xml" is denied.

UnauthorizedAccessException: Access to the path "Library\UnityAssemblies\UnityEngine.xml" is denied. UnityVS を使用しており、かつ Visual Studio を開いている状態で 「Visual Studio Tools>Generate Project Files」を選択した時に遭遇 一度 Visual…

【Unity】LineRendererの頂点をVector3型の配列やリストで一括で設定できる拡張メソッド

using UnityEngine; public static class LineRendererExtensions { public static void SetPositions( this LineRenderer self, IList<Vector3> positions ) { self.SetVertexCount( positions.Count ); for ( int i = 0; i < positions.Count; i++ ) { self.SetPosi</vector3>…

【Unity】Plane.Raycastで一時変数を宣言する必要がない拡張メソッド

using UnityEngine; public static class PlaneExtensions { public static float Raycast( this Plane self, Ray ray ) { float enter; self.Raycast( ray, out enter ); return enter; } }

【Unity】スクリプトからUnityVS.OpenFileを実行するためのクラス

参考サイト様 Visual Studio Tools for Unity - Script opening with Unity 4.2

【Unity】Unityの.dllを逆コンパイルしたソースコード一式

MattRix/UnityDecompiled UnityのAPIがどのように実装されているのかを見ることができます

【Unity】無効なコンポーネントがアタッチされているかどうかを返す拡張メソッド

using UnityEngine; using System.Linq; public static class GameObjectExtensions { /// <summary> /// 無効なコンポーネントがアタッチされている場合 true を返します /// </summary> public static bool HasMissingScript( this GameObject self ) { return self .GetCompo…

【Unity】Unity 4.x で UnityEngine.Assertions を使えるようにするスクリプト

【Unity】リストがnullまたは空であることを保証する関数

using System.Collections.Generic; using System.Diagnostics; using UnityEngine.Assertions; public static class AssertUtils { [Conditional( "UNITY_ASSERTIONS" )] public static void IsNullOrEmpty<T>( this IList<T> self ) { Assert.IsTrue( self == nu</t></t>…

【Unity】リストがnullまたは空でないことを保証する関数

using System.Collections.Generic; using System.Diagnostics; using UnityEngine.Assertions; public static class AssertUtils { [Conditional( "UNITY_ASSERTIONS" )] public static void IsNotNullOrEmpty<T>( this IList<T> self ) { Assert.IsTrue( self !=</t></t>…

【Unity】各拡張子におけるアセットタイプ一覧

拡張子 アセットタイプ anim AnimationClip wav AudioClip mp3 AudioClip ogg AudioClip aif AudioClip aiff AudioClip xm AudioClip mod AudioClip it AudioClip s3m AudioClip hdr Cubemap cubemap Cubemap ttf Font otf Font dfont Font prefab GameObjec…

【greegdm01】「リアルタイムマルチプレイのタワーディフェンス『ポイッとヒーロー』のUnity5移行事例」メモ

GREE GameDevelopers' Meetup 01 - #greegdm01 発表資料 ポイッとヒーロー紹介 ポイッとヒーロー◆4人協力タワーディフェンスPokelabo, Inc.ゲーム無料 テーマ Unity4からUnity5 Unity5に移行した理由 iOSの64bit対応問題 Unity4.6よりUnity5のほうが対応が早…

【Unity】Sceneビューのグリッドの表示をオフにするエディタ拡張

参考サイト様 [C#] unity3d Disable Grid - Pastebin.com 類似記事 【Unity】Sceneビューのすべてのギズモの表示をオフにするエディタ拡張 - コガネブログ 【Unity】Sceneビューのすべてのアイコンの表示をオフにするエディタ拡張 - コガネブログ

【Unity】Sceneビューのすべてのアイコンの表示をオフにするエディタ拡張

参考サイト様 "Uncheck all" in Gizmos menu in Scene view? - Unity Answers 類似記事 【Unity】Sceneビューのすべてのギズモの表示をオフにするエディタ拡張 - コガネブログ 【Unity】Sceneビューのグリッドの表示をオフにするエディタ拡張 - コガネブログ

【Unity】Sceneビューのすべてのギズモの表示をオフにするエディタ拡張

参考サイト様 "Uncheck all" in Gizmos menu in Scene view? - Unity Answers 類似記事 【Unity】Sceneビューのすべてのアイコンの表示をオフにするエディタ拡張 - コガネブログ 【Unity】Sceneビューのグリッドの表示をオフにするエディタ拡張 - コガネブロ…

【Unity】メニュー付きの検索欄を表示するエディタ拡張

private string mText ; private int mSearchMode ; private void OnGUI() { var rect = new Rect( 0, 0, 200, 20 ); var searchModes = new []{ "ヒトカゲ", "リザード", "リザードン" }; mText = EditorGUIUtils.ToolbarSearchField( rect , mText , searc…

【Unity】検索欄を表示するエディタ拡張

private string mText; private void OnGUI() { mText = EditorGUIUtils.SearchField( new Rect( 0, 0, 100, 100 ), mText ); } 類似記事 【Unity】メニュー付きの検索欄を表示するエディタ拡張 - コガネブログ

【Unity】Path.Combine( params string[] paths )を使用できるようにする関数

using System.IO; public static class PathUtils { /// <summary> /// 文字列の配列を 1 つのパスに結合します /// </summary> public static string Combine( params string[] paths ) { return paths.Aggregate( ( a, b ) => Path.Combine( a, b ) ); } } PathUtils.Combine(…

【Unity】区切り文字にスラッシュを使用してパスを連結する関数 その2

using System.IO; public static class PathUtils { /// <summary> /// 文字列の配列を 1 つのパスに結合します /// </summary> public static string Combine( params string[] paths ) { return paths .Aggregate( ( a, b ) => Path.Combine( a, b ) ) .Replace( "\\", "/" );…

【Unity】区切り文字にスラッシュを使用してパスを連結する関数

using System.IO; public static class PathUtils { /// <summary> /// 2 つの文字列を 1 つのパスに結合します /// </summary> public static string Combine( string path1, string path2 ) { return Path .Combine( path1, path2 ) .Replace( "\\", "/" ); } } Path.Combine(…

【Unity】区切り文字にスラッシュを使用して指定したディレクトリ内のファイル名を返す関数

using System.IO; using System.Linq; public static class DirectoryUtils { /// <summary> /// <para>指定したディレクトリ内のファイルの名前 (パスを含む) を返します</para> /// <para>パスの区切り文字は「\\」ではなく「/」です</para> /// </summary> public static string[] GetFiles( string pat…

【Unity】メッセージに書式指定可能なAssert系の関数

AssertUtils.IsNullFormat( nullObj, "{0}", "メッセージ" ); AssertUtils.IsNotNullFormat( notNullObj, "{0}", "メッセージ" ); AssertUtils.IsTrueFormat( true, "{0}", "メッセージ" ); AssertUtils.IsFalseFormat( false, "{0}", "メッセージ" ); Asser…

【Unity】メッセージに書式指定可能なMustExtensions系の拡張メソッド

nullObj .MustBeNullFormat( "{0}", "メッセージ" ); notNullObj .MustNotBeNullFormat( "{0}", "メッセージ" ); canJump .MustBeTrueFormat( "{0}", "メッセージ" ); isDead .MustBeFalseFormat( "{0}", "メッセージ" ); health .MustBeEqualFormat( 0, "{0…

【Unity】Component型のインスタンスのnullチェックを省略可能な拡張メソッド

// コンポーネントからBoxColliderを取得する // コンポーネントがnullの場合は何もしない BoxCollider result = null; if ( com != null ) { result = com.GetComponent<BoxCollider>(); } 下記の拡張メソッドを使用することで Component型のインスタンスの上記のようなn</boxcollider>…

【Unity】GameObject型のインスタンスのnullチェックを省略可能な拡張メソッド

// ゲームオブジェクトをアクティブにする // ゲームオブジェクトがnullの場合は何もしない if ( go != null ) { go.SetActive( true ); } // ゲームオブジェクトからBoxColliderを取得する // ゲームオブジェクトがnullの場合は何もしない BoxCollider resu…

【Unity】Destroy may not be called from edit mode! Use DestroyImmediate instead.

Destroy may not be called from edit mode! Use DestroyImmediate instead. Also think twice if you really want to destroy something in edit mode. Since this will destroy objects permanently. エディタ拡張の処理でGameObject.Destroyを呼び出すと…

【Unity】The same field name is serialized multiple times in the class or its parent class. This is not supported: -> AAAA(MonoBehaviour) BBBB(CCCC) DDDD

The same field name is serialized multiple times in the class or its parent class. This is not supported: -> AAAA(MonoBehaviour) BBBB(CCCC) DDDD 基底クラスと派生クラスで同名のフィールドをシリアライズ可能にした場合 上記のエラーが発生します …

【Unity】「Assert.IsNull」「Assert.IsNotNull」に複数の引数を渡せる関数を定義する

AssertUtils.IsNull( obj1, obj2 ); AssertUtils.IsNull( obj1, obj2, obj3 ); AssertUtils.IsNull( obj1, obj2, obj3, obj4 ); AssertUtils.IsNull( obj1, obj2, "null ではないオブジェクトが存在します" ); AssertUtils.IsNull( obj1, obj2, obj3, "null …

【Unity】RandomRangeInt can only be called from the main thread.

using UnityEngine; public class Player : MonoBehaviour { private int mValue = Random.Range( 0, 10 ); } このように変数初期化子でRandom.Range関数を使用すると 下記のようなエラーが発生します RandomRangeInt can only be called from the main thre…

【Unity】コンポーネントを破棄する拡張メソッド

var character = gameObject.GetComponent<Character>(); // 従来の方法 GameObject.Destroy( character ); // 拡張メソッドの方法 character.Destroy();</character>

【Unity】「Starter City-Building Game Kit」を使用してみる

Asset Store https://www.assetstore.unity3d.com/jp/#!/content/32605 概要 クラッシュ・オブ・クランのような街作りゲームのスターターキット クラッシュ・オブ・クラン (Clash of Clans)Supercellゲーム無料 公式サイト http://www.citybuildingkit.com/j…

【Unity】GameObject (named 'XXXX') references runtime script in scene file. Fixing!

using UnityEngine; public class Player : MonoBehaviour { public Enemy mEnemy; } using UnityEngine; public class Enemy : MonoBehaviour { } 例えば上記のようなスクリプトが存在して それぞれをゲームオブジェクトにアタッチして参照を設定していたと…

【Unity】指定されたすべてのシーンファイルに対して一括で処理を行う汎用関数

using UnityEditor; using UnityEngine; public class ExampleClass { [MenuItem( "Tools/Example" )] static void Example() { var dirList = new [] { "Assets/Scenes", }; EditorUtils.ApplyToScenesByDirectoryList( dirList, c => { Debug.Log( c ); } …

【Unity】指定されたすべてのシーンファイルに対して一括で処理を行うエディタ拡張

dirList配列に対象のシーンファイルが格納されている ディレクトリのパスを記述する TODOコメントの場所に一括で行いたい処理を記述する

【Unity】「第32回代々木Unity勉強会」でエディタ拡張について発表させていただきました

「第32回代々木Unity勉強会」で エディタ拡張について発表させていただきました 発表資料をSlideShareに公開したので共有します 資料内容 エディタ拡張の基本 Hierarchy ビューの拡張 Project ビューの拡張 Scene ビューの拡張 参考アセット 関連記事

【Unity】TweenライブラリのGC Allocを知る

下記の条件下における GC Alloc を調査 0 から 1 の値を 1 秒間繰り返し変化させる処理を登録 毎フレーム呼び出されるコールバック関数を登録 iTween using UnityEngine; public class ExampleClass : MonoBehaviour { private float mValue; void Awake() {…

【Unity】Projectビューにファイル数を表示するエディタ拡張

類似記事 【Unity】Projectビューにエクスプローラでファイルを開くボタンを表示するエディタ拡張 - コガネブログ 【Unity】Sceneビューにボタンを表示するエディタ拡張 - コガネブログ 【Unity】Projectビューにアセットの容量を表示するエディタ拡張 - コ…