かなりいい加減なUnityエラー解決方法

warning CS0618: `UnityEngine.GameObject.active' is obsolete: `GameObject.active is obsolete. Use GameObject.SetActive(), GameObject.activeSelf or GameObject.activeInHierarchy.'
Unity 4 から "active"プロパティが"activeSelf" に変更されたので該当箇所を修正する。
***

error CS0200: Property or indexer `UnityEngine.GameObject.activeSelf' cannot be assigned to (it is read only)
activeSelfは読み取り専用なので、"gameobject.activeSelf = true"とかは無理。
書き込む場合はgameobject.SetActive(true)などを使う。
***

Error building Player: UnityException: Bundle Identifier has not been set up correctly
ビルドしたときに発生した。
File -> Build Settingsで下記画面を開く。

![Unity_bild_settings.png](https://qiita-image-store.s3.amazonaws.com/0/17192/94ef4fab-1018-bc9a-91b5-b6421e4f99bd.png)

したの方にある
Player Settings... -> Others Settings -> Bundle Identifier
を適当な名前に変更する。
***
An object reference is required to access non-static member
staticをつけたメソッドからメンバ変数にアクセスしようとしたら起きた。
とりあえずメソッドのstaticを外して解消。

***

There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.
ひとつのシーンにカメラが複数台あって、そのカメラたちがAudio Listenerコンポーネントを別々にもっているの怒られている。ひとつだけ有効にする。
***

You are trying to create a MonoBehaviour using the 'new' keyword.  This is not allowed.  MonoBehaviours can only be added using AddComponent().  Alternatively, your script can inherit from ScriptableObject or no base class at all
とあるスクリプトのインスタンス生成しようとしたら発生。原因はMonoBehaviourを継承したクラスのインスタンスをnewで生成しようとするのは駄目。AddComponentを使おう！！
以下、サンプル

```java:test.cs
using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {}
```

```java:test2.cs
using UnityEngine;
using System.Collections;

public class test2 : MonoBehaviour {
	void Start () {
		test ttt = new test();
	}
}
```

上記だとnewでインスタンス生成しようとしているので警告となる。

```java:test2.cs
using UnityEngine;
using System.Collections;

public class test2 : MonoBehaviour {
	void Start () {
		GameObject obj = new GameObject("Cube");
		test ttt = obj.AddComponent<test>();
		Debug.Log (ttt);
	}
}
```

で上記のように修正するとOK。Cubeはtestをアタッチした適当なゲームオブジェクト。MonoBehaviourはGamgeObjectに依存しているのでこういう風に一度ゲームオブジェクトをとらないと駄目らしい。
***

Getting control 1's position in a group with only 1 controls when doing Repaint
なんかよくわからないけど、再描画(トグルで閉じたり開いたりするとか)の仕方がまずいらしい。

```java:Test.cs
using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {}
```

```java:Editor/TestInspector.cs
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestInspector : Editor {

	public override void OnInspectorGUI() {
		string key = "flg";

		bool flg = EditorPrefs.GetBool(key, true);
		
		if (flg){
			GUI.backgroundColor = Color.yellow;
		}else{
			GUI.backgroundColor = Color.white;
		}

		if (GUILayout.Toggle(true, "Toggle", "dragtab", GUILayout.MinWidth(20f)))
			EditorPrefs.SetBool(key, !flg);

		if (flg){
			GUILayout.BeginVertical();
			GUILayout.EndVertical();
		}
	}

}
```

これでトグルで切り替えて背景色の変更とVerticalなエリアの表示・非表示の切り替えをしようとしたがダメだった。
下記のようにGUI.changedの値で確認したて切り替えたらOKでした。意味がよくわかりません。。。

```java:Editor/TestInspector.cs
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Test))]
public class TestInspector : Editor {

	public override void OnInspectorGUI() {
		string key = "flg";

		bool flg = EditorPrefs.GetBool(key, true);
		
		if (flg){
			GUI.backgroundColor = Color.yellow;
		}else{
			GUI.backgroundColor = Color.white;
		}

		GUI.changed = false;

		if (GUILayout.Toggle(true, "Toggle", "dragtab", GUILayout.MinWidth(20f)))
			flg = !flg;

		if (GUI.changed) EditorPrefs.SetBool(key, !flg);

		if (flg){
			GUILayout.BeginVertical();
			GUILayout.EndVertical();
		}
	}
}
```
***
Error while importing package: Couldn't decompress package
なんかimportできなかった。。　インポートするpackageの設置場所が悪いらしい。
Cドライブ直下に配置したらできるようになった。

***
Unexpected symbol `<internal>
全角文字列が混入していたっぽい

***
Only assignment, call, increment, decrement, and new object expressions can be used as a statement

```java:
Input.touches[0].position
```

とやったとき発生。

```java:
Debug.Log(Input.touches[0].position);
```

とやるとでなくった。とりあえず、なんかに使えということだろうか。。。

***
error CS0103: The name `hogehoge' does not exist in the current context

変数宣言がおそらくされていない。

***
AnimationEvent has no function name specified!

アニメーションクリップにイベントを指定しているのに関数が割り当てられていない。![animation_event_no_function.png](https://qiita-image-store.s3.amazonaws.com/0/17192/7f0d01dd-da29-9a0f-43be-7dff56ad8bbe.png)
青いやつを消すとなくなる

***
![cant_add_script.png](https://qiita-image-store.s3.amazonaws.com/0/17192/deaeb5d4-1a78-00dc-842f-72a2aabfd80d.png)
UnityでGameObjectにアタッチするScriptクラスには、MonoBehaviourを継承する必要がある模様。

***
error CS0117: `System.IO.File' does not contain a definition for `WriteAllBytes'
なんかPlatfomrがWebプレイヤーだとおきるみたい。別のにした。

***
UnassignedReferenceException
pulic変数を宣言して、Inspectorからそこになりもいれていないとよく起こる。

***
Level 'HogeHoge' (-1) couldn't be loaded because it has not been added to the build settings.
To add a level to the build settings use the menu File->Build Settings...
UnityEngine.Application:LoadLevelAsync(String)

```csharp
Application.LoadLevelAsync ("HogeHoge");
```

とやったらエラーでた。「File」-「Build Settings」でロードするSceneを入れればOK。
Scenes In BuildのところにSceneをD&Dする。消すときは選択してDeleteキー。

***
error CS1627: Expression expected after yield return

IEnumeratorインターフェースメソッドでyield returnをしていない。もしくはreturn方法がまずい。

***
error CS0535: `xxx' does not implement interface member `System.IDisposable.Dispose()'

IDisposableインターフェースを継承した場合はDiposeメソッドを実装する必要があるみたいです。

***
Rejected because no crossdomain.xml policy file was found

File → Project Settings → Editor
InspectorのHost URLにアクセスするWebサーバなどのドメインを指定する

***
Building Asset Bundles requires Unity Advanced for iOSSupport

BuildPipeline.BuildAssetBundleをしたら発生。iOSとandroidを作成しようとしたのですが、Pro版のほか各ビルドライセンスが必要なようだ

***
Parent directory must exist before creating asset at

ファイルをつくるためのフォルダが存在しない。そのフォルダを手動でつくったら解決した。

***
Control cannot fall through from one case label to another

switchでdefaultにbreakを忘れていた

***
Sharing violation on path

オープン中にファイルにアクセスしようとした

***
The expression being assigned to `xxxxx' must be constant

定数に式などはいれらない

***
Error building Player: SystemException: 'System.Net.Sockets' are supported only with Unity Android Pro. Referenced from assembly 'Assembly-CSharp'.

Androidのライセンスないよ！

***
Can't add component 'NewBehaviourScript' because it doesn't exist. Check to see if the file name and class name match.

ファイル名とそのファイルの中に書かれているclass名が違う

***
IOException: Sharing violation on path...

あるファイルを開いたまま、そのファイルに書き込もうしたら怒られた。ちゃんと閉じたらよくなった。

***
Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption.

インスタンス化する前のオブジェクトに親を設定しようとした。
prefab化をインスタンス化する前によくやる

***
'C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll' is in timestamps but is not known in guidmapper...

AssetsをReimport Allしたら直った

***
The best overloaded method match for `string.Split(params char[])' has some invalid arguments

Splitの引数を「","」とダブルクオーテーションで囲っているのがダメ。シングルクオーテーションで囲ったら直った
引数に問題があるときに出る模様

***
Set-up Android SDK path to make Android remote work

UnityにAndroidSDKの設定していない可能性あり

***
Use of unassigned local variable xxx

変数を初期化していないとか

***
There are inconsistent line endings in the 'Assets/Test.cs' script. Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings menu commands.

Test.csの改行コードがいろいろと混在してるよという警告.

***
This asset bundle 'test.assetbundle' was not created with UncompressedAssetBundle flag, expected id 'UnityRaw', got 'UnityWeb'

圧縮形式のAssetBundleをAssetBundle.CreateFromFile ("test.assetbundle")でロードしようとした

***
test.cs(5,13): error CS0101: The namespace `global::' already contains a definition for `Hoge'

同じ名前空間内に同じものを定義した

***
You are trying to load data from a www stream which had the following error when downloading.Cannot load cached AssetBundle. A file of the same name is already loaded from another AssetBundle.

アンロードをせずにロードしようとしたとき
例)
AssetBundle assetBundle;
assetBundle.Unload(false);
をせずに
WWW www;
www = WWW.LoadFromCacheOrDownload (test/test, 1);
www.assetBundle;

***
Test.cs(140,48): error CS0500: `Test.Hoge()' cannot declare a body because it is marked abstract

抽象メソッドに{}を定義したら発生
protected abstract  Hoge() {};
↓
で解消
protected abstract  Hoge();

***
[CRIWARE]:Failed to create XAudio2 object.[E2009042301] The version of DirectX SDK might be different from Atom library's.

Windows7でUnityエディターで再生したらなんか上記エラー発生して音がでなかった。
[DirectX End-User Runtimes (June 2010)](http://www.microsoft.com/en-us/download/confirmation.aspx?id=8109)をダウンロードしてインストしたら大丈夫になった。

***
ArgumentException: May only be called in OnPostProcessTexture

よくわからんが画像を壊れていたっぽく、差し替えたら治った
Reimportで治る可能性もあるか

***
Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.

```csharp
Transform t = gameobject.transform;
//t.parent = parent.transform;
t.SetParent(parent.transform);
```

コメントアウトしてあるような親の設定を行うと警告がでる。どっかのバージョンそうなったもよう。

***
Couldn't create asset file!
UnityEditor.AssetDatabase:CreateAsset(Object, String)

```csharp
AssetDatabase.CreateAsset(player, path);
```

のようなコードでpathにたどるまでのディレクトリとかがないときに発生。

***
![Image.PNG](https://qiita-image-store.s3.amazonaws.com/0/17192/6ee8e5ce-d798-5137-9405-2041d654babc.png)
上記のような警告がでた
Image Type をSimpleにしたら消えた

***
error CS1612: Cannot modify a value type return value of `System.Collections.Generic.List<hogehogeStruct>.this[int]'. Consider storing the value in a temporary variable

```csharp
public struct TestStruct
{
	public int i;
}

public class TestClass
{
	void Start()
	{
		List<TestStruct> tList = new List<TestStruct>();

		TestStruct t1 = new TestStruct();
		t1.i = 1;

		tList.Add(t1);

        // これはだめ!!
		// tList[0].i = 2;

        // これはOK!!
		TestStruct t2 = tList[0];
		t2.i = 2;
		tList[0] = t2;
	}

}
```

***
only pot textures can be compressed to etc1 format

64×64とか、2のべき乗でないサイズのときでる警告

***

event型に式をいれようとしたら発生

```csharp
public event SendComplete sendComplete;

sendComplete = () => {}
```

Test.cs(92,42): error CS0070: The event `xxx.sendComplete' can only appear on the left hand side of += or -= when used outside of the type `xxx'-----------------

下記のようにいれたらOK

```csharp
public event SendComplete sendComplete;

sendComplete += () => {}
```

***
 error CS1061: Type `System.IO.FileInfo' does not contain a definition for `OpenRead' and no extension method `OpenRead' of type `System.IO.FileInfo' could be found (are you missing a using directive or an assembly reference?)

WebPlayerではOpenReadは使えない模様

***
Could not start compilationWin32Exception ...

Editor以下にスクリプトを作成したら発生。ウィルスソフトがウィルスと隔離した模様。ウィルスソフトの設定で復元したら大丈夫になった。
なぜにウィルス扱い？

***
GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced)

```csharp
scrollPosition = GUILayout.BeginScrollView(scrollPosition);
GUILayout.EndScrollView(); // ← この行がないときとかに発生.
```

GUILayoutの始まりと終わりでちゃんと囲えていない場合に発生。

***
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/17192/8d894fe4-0c51-91bb-0537-a4bde2ca8092.png)

Editor拡張スクリプトでTextureをロードしまくったら発生。

```csharp
EditorUtility.UnloadUnusedAssets();
EditorUtility.UnloadUnusedAssetsIgnoreManagedReferences();
```

をちょくちょく呼ぶようにしたら大丈夫になった。片方でも大丈夫かも。なお、Unity4系の話。5系は違うメソッドかもしれない。

***
Unsupported texture format - needs to be ARGB32, RGBA32, BGRA32, RGB24, Alpha8 or DXT

Texture ImpoterでARGB32, RGBA32, BGRA32, RGB24, Alpha8 or DXのどれかにしたら解決した。

***
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/17192/2af8d92e-61ca-45ee-11db-2e3918a55816.png)

PARSE ERROR:
unsupported class file version 52.0

Androidのapkを作成するとき発生。
Androidのネイティブプラグイン(.jarファイル)を含んだものを作成しようとした。

Unityのバージョンは4.6.8f1
jdk 1.8.0
Android Studioでjarは作成した。

build.gradleの以下のようにしてjarファイル作成したら大丈夫になった。

```java
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    sourceCompatibility = 1.7 // ここ追加
    targetCompatibility = 1.7 // ここ追加
}
```

***

```bash
UnassignedReferenceException: The variable HogeButton of  HogeButtonScript has not been assigned.
You probably need to assign the HogeButton variable of the HogeButtonScript script in the inspector.
```

HogeScript.csでpublic変数で宣言したhogeButtonにinspectorから割当をせずに、それを使おうとした場合発生。