Can someone please help me solve this problem - When I duplicate my asset , why the original one stops working?

Can someone please help me solve this problem - When I duplicate my asset , the original one stops working and the duplicated one works perfectly fine. The problem is still there if I import the same asset again, then again original one stops working??

The asset is Endless 2D terrain

Using that asset as-provided, you can only have one instance of the Endless 2D terrain prefab in a scene.

The reason is because, if you look towards the bottom of the PrefabManager and TerrainManager scripts, they look for another object in the scene by name:

var obj = GameObject.Find(ManagerName);

GameObject.Find returns the first instance it finds of a matching gameobject. You have two prefabs in the scene with the same name, so your two scripts are trying to control the same object.

One solution would be to make each PrefabManager and TerrainManager be instantiated with a unique name, by appending the GetInstanceID of the parent object that creates them, and then refer to that unique name instead. For a less robust, quick-fix solution, just manually give your two instances different names and hard-code them into the respective manager scripts.