I had this problem too and if you have a larger project where multiple people’s been involved, it might be hard to find the files which conflicts. Hence, I wrote a small script that helps you find script name conflicts. Copy the code bellow and place them in scripts located in Assets\Scripts\Editor\
Filename: DuplicateWindow.cs
using UnityEngine;
using UnityEditor;
using System.Collections;
using System.Collections.Generic;
/// <summary>
/// Duplicate window.
///
/// This script searches for scripts which has naming conflicts.
///
/// Created by Simon Jonasson,
/// Inspiered by Kristian Langelund Helle Jespersen, http://zaxisgames.blogspot.se/2012/02/automatically-locate-all-unused-assets.html
/// </summary>
[ExecuteInEditMode]
public class DuplicateWindow : EditorWindow {
List<string> m_Strings = new List<string> ();
static bool m_Init = false;
static bool m_Found = false;
// Add menu named "CleanUpWindow" to the Window menu
[MenuItem("Window/DupesWindow")]
static void Init()
{
// Get existing open window or if none, make a new one:
DuplicateWindow window = (DuplicateWindow)EditorWindow.GetWindow(typeof(DuplicateWindow));
window.minSize = new Vector2 (200, 300);
window.Show();
m_Init = false;
m_Found = false;
}
//This ain't pretty, but it works. I am by no means a GUI designer :-P
void OnGUI()
{
GUIStyle style = new GUIStyle ();
style.wordWrap = true;
style.normal.textColor = Color.white;
GUILayout.BeginVertical ();
if (GUILayout.Button("Log dupes"))
{
compareAssetList(UsedAssets.GetAllAssets());
m_Init = true;
}
if (m_Init && !m_Found) {
style.normal.textColor = Color.green;
GUILayout.Label ("
No duplicates found 
", style);
style.normal.textColor = Color.white;
} else if ( m_Init && m_Found){
style.normal.textColor = Color.red;
string s = “”;
foreach( string t in m_Strings ){
s = s + t + "
“;
}
GUILayout.Label (”
Duplicates found!!!
" + s, style);
Debug.Log("Found duplicates:
“+s);
style.normal.textColor = Color.white;
} else {
GUILayout.Label (”
Press the button above. The results will be printed in this window and in the console.
The seach might take a few minues. During that time, Unity will freeze
In the case there is a huge amount of conflicts, you might need to expand the window and press the button again
Known issues: This window will sometimes not register clicks and sometimes revert to this ‘Init’ stage after a seach has been done. In that case, just do the search again.", style);
}
GUILayout.EndVertical ();
}
private void compareAssetList(string[] assetList)
{
m_Strings.Clear ();
List<string> filenames = new List<string> ();
for (int i = 0; i < assetList.Length; i++)
{
string s = assetList_.Substring( assetList*.LastIndexOf("/") +1 ).ToLower(); //Get the filename without path*_
* int idx = s.IndexOf(“.”); //find index of the file-type specifier*
* if( idx > 0 ){*
* string type = s.Substring(idx);*
* if( idx > 0 && (type == “.cs” || type == “.boo” || type == “.js”)){*
* s = s.Substring(0, idx); //get filename without file type*
* filenames.Add(s);*
* }*
* }*
* }*
* filenames.Sort ();*
* for( int i = 1; i < filenames.Count; i++ ){*
_ if( filenames == filenames[i-1] ){ //Since the strings are sorted, if string n and n-1 is identical, two script files has the same name
* m_Found = true;
if( !m_Strings.Contains(filenames) ){
m_Strings.Add(filenames);*
* }
}
}
}
}*
Filename: UsedAssets.cs
using UnityEngine;
using UnityEditor;
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;_
*// Created by Kristian Langelund Helle Jespersen, http://zaxisgames.blogspot.se/2012/02/automatically-locate-all-unused-assets.html*_
public class UsedAssets
{
* public static string GetAllAssets()
{
string[] tmpAssets1 = Directory.GetFiles(Application.dataPath, ".", SearchOption.AllDirectories);
string tmpAssets2 = Array.FindAll(tmpAssets1, name => !name.EndsWith(“.meta”));
string allAssets;*_
* allAssets = Array.FindAll(tmpAssets2, name => !name.EndsWith(“.unity”));*
* for (int i = 0; i < allAssets.Length; i++)*
* {*
allAssets = allAssets_.Substring(allAssets*.IndexOf(“/Assets”) + 1);_
allAssets _= allAssets.Replace(@"", “/”);
}*_
* return allAssets;*
* }*
* public static void GetLists(ref List assetResult, ref List dependencyResult)*
* {*
* assetResult.Clear();*
* dependencyResult.Clear();*
* string LocalAppData = string.Empty;*
* string UnityEditorLogfile = string.Empty;*
* if (Application.platform == RuntimePlatform.WindowsEditor)*
* {*
* LocalAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);*
* UnityEditorLogfile = LocalAppData + “\Unity\Editor\Editor.log”;*
* }*
* else if (Application.platform == RuntimePlatform.OSXEditor)*
* {*
* LocalAppData = Environment.GetFolderPath(Environment.SpecialFolder.Personal);*
* UnityEditorLogfile = LocalAppData + “/Library/Logs/Unity/Editor.log”;*
* }*
* try*
* {*
* // Have to use FileStream to get around sharing violations!*
* FileStream FS = new FileStream(UnityEditorLogfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);*
* StreamReader SR = new StreamReader(FS);*
* string line;*
* while (!SR.EndOfStream && !(line = SR.ReadLine()).Contains(“Mono dependencies included in the build”));*
* while (!SR.EndOfStream && (line = SR.ReadLine()) != “”)*
* {*
* dependencyResult.Add(line);*
* }*
* while (!SR.EndOfStream && !(line = SR.ReadLine()).Contains(“Used Assets,”));*
* while (!SR.EndOfStream && (line = SR.ReadLine()) != “”)*
* {*
* line = line.Substring(line.IndexOf("% ") + 2);*
* assetResult.Add(line);*
* }*
* }*
* catch (Exception E)*
* {*
* Debug.LogError("Error: " + E);*
* }*
* }*
}