Unityで、「NullReferenceException: Object reference not set to an instance of an object UnityEditor.InspectorWindow.OnSelectionChange () (at」

Unity上で下記エラーがでるようになった。

NullReferenceException: Object reference not set to an instance of an object UnityEditor.InspectorWindow.OnSelectionChange () (at

確認したところ、playGamesPlugin周りが影響しているようだけど、
Unityを再起動したら治る。

参考記事

https://github.com/playgameservices/play-games-plugin-for-unity/issues/2029

最新版のplaygameの0.9.64でも同じ事象になった。

確認環境

  • Unity2017 4.301f
  • play-games-plugin-for-unity 0.9.64

Asset StoreのDetonator 〜というのをUnity2017にいれた際の対処

無料でめちゃくちゃクオリティの高い爆発できる「Detonaor〜」というassetを使っているのですが、

これ → Detonator Explosion Framework

Unity5以降を使っているとShader周りなどでエラーがでるのでメモ。


Shader error in 'HeatDistort': 'tex2Dproj': no matching 2 parameter intrinsic function; Possible intrinsic functions are: tex2Dproj(sampler2D, float4|half4|min10float4|min16float4) at line 42 (on gles3) Compiling Vertex program Platform defines: UNITY_NO_DXT5nm UNITY_NO_RGBM UNITY_ENABLE_REFLECTION_BUFFERS UNITY_FRAMEBUFFER_FETCH_AVAILABLE UNITY_NO_CUBEMAP_ARRAY UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF3 UNITY_NO_FULL_STANDARD_SHADER SHADER_API_MOBILE UNITY_HARDWARE_TIER1 UNITY_COLORSPACE_GAMMA UNITY_LIGHTMAP_DLDR_ENCODING

Asset自体Unity4までしか対応していないのもあり、
僕は、HeatDistort一旦シェーダー無効にして対応しました。

このasset昔からあるけど、マジ最強!

Unityで、実機だけデバッグログを表示しない設定

アプリを長期間かけて作っていると色々デバッグログを仕掛けたくなるもの、
これがどんどん増えていくと、リリースする前に一気に非表示にしたいもの。

で、スマホはデバッグログを表示しないで、Unity上で作っている際は一括で非表示する方法

Unity2017〜?用


void Awake(){ #if UNITY_EDITOR // Unity上で、デバッグログ出力 Debug.unityLogger.logEnabled = true; #else // それ以外(実機)はデバッグログを出力しない Debug.unityLogger.logEnabled = false; #endif }

Unity5系?用


void Awake(){ #if UNITY_EDITOR // Unity上で、デバッグログ出力 Debug.logger.logEnabled = true; #else // 実機はデバッグログを出力しない Debug.logger.logEnabled = false; #endif }

無効にするタイミングは一番最初にするように調整してね。

Unity3Dで、3Dのテクスチャ(画像)だけスクロールする

Unity3Dで、3Dオブジェクトのテクスチャ(画像)だけスクロールする

  • ただのPlaneの3Dに貼り付けてある画像をスクロールするだけで前に進んでいるように見せたり。

  • もしくは縦にスクロールさせて滝をつくったり応用できます。

よく使うが忘れてしまうのでメモ

UvScroll.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;



public class UvScroll : MonoBehaviour {

    // UVスクロール
    public float scrollSpeedX = 0.5f;
    public float scrollSpeedY = 0.5f;

    void Update()
    {
        var offsetX = Time.time * scrollSpeedX;
        var offsetY = Time.time * scrollSpeedY;
        GetComponent<Renderer> ().material.mainTextureOffset = new Vector2(offsetX, offsetY);
    }
}

確認した環境

  • Unity2017
  • MacOSX El Capitan