7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity】実行するだけでなぜか変更されてしまうファイル

Posted at

Unityでコミットするときに手を付けてないファイルが変更されていたのでメモ。

Assetsのprefabやマテリアルをスクリプトで直接変更すると、実行するたびにそのファイルが変更されてしまいます。
以下のスクリプトだと実行するたびにAssets/Resouces/Cube.prefabがX方向に移動してしまいます。

ObjectMove.cs
// ※ダメな例
using UnityEngine;
public class ObjectMove : MonoBehaviour
{
	// 初回更新
	void Start()
	{
		// Assetsのprefabを読み込み
		GameObject prefab = Resources.Load( "Cube" ) as GameObject;

		// 読み込んだprefabをX方向に移動
		prefab.transform.position += new Vector3( 1.0f, 0.0f, 0.0f );
	}
	
}

Assetsのファイルは直接変更せず、Instantiateで生成したオブジェクトを変更すれば大丈夫。

ObjectMove.cs
// ※こっちだと大丈夫
using UnityEngine;
public class ObjectMove : MonoBehaviour
{
	// 初回更新
	void Start()
	{
		// Assetsのprefabを読み込み
		GameObject prefab = Resources.Load( "Cube" ) as GameObject;

		// インスタンス
		GameObject cube = Instantiate( prefab );

		// X方向に移動
		cube.transform.position += new Vector3( 1.0f, 0.0f, 0.0f );
	}
	
}

InspectorでAssetsのファイルをアタッチするときも注意

Resources.Loadだと気が付きやすいのですが、InspectorでAssetsのファイルを直接アタッチ場合でも同様のことが起こるので注意

Instpector.png

こっちも以下のようなスクリプトだと実行するたびにどんどんX方向に移動してしまいます...

ObjectMove.cs
// ※ダメな例
using UnityEngine;
public class ObjectMove : MonoBehaviour
{
	// Inspectorでアタッチしたオブジェクト
	public GameObject prefab;

	// 初回更新
	void Start()
	{
		// X方向に移動
		prefab.transform.position += new Vector3( 1.0f, 0.0f, 0.0f );
	}
	
}

Instantiateで生成したものを変更すれば大丈夫

ObjectMove.cs

// ※こっちだと大丈夫
using UnityEngine;
public class ObjectMove : MonoBehaviour
{
	// Inspectorでアタッチしたオブジェクト
	public GameObject prefab;

	// 初回更新
	void Start()
	{
		// インスタンス
		GameObject cube = Instantiate( prefab );

		// X方向に移動
		cube.transform.position += new Vector3( 1.0f, 0.0f, 0.0f );
	}
	
}
7
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?