How to replace model without a prefab file? - unity3d

I'm new to ARCore and followed this article: https://haptic.al/arcore-101-fa6f93d4c003 to add a model with animation and see it with my phone camera.
I switched the model from the article (kitty) with a ball that I downloaded from Unity assets store, I just replaced the previous prefab object with the new one from the ball package that I imported.
Everything works fine, but now I want to download other model from the Unity store and I see that some models don't include the prefabs folder or a prefab file inside the the model package.
Is there another way to switch my current model with a new one without being use the prefab file?
Thank you.

Even if the downloaded file doesn't contain a prefab you can still create your own prefab by placing the object in the scene (.fbx, .obj files etc.) adding whatever materials you want it to have, and then dragging the name from the Hierarchy panel into the Project panel. The name in the hierarchy panel should turn blue if you've made a prefab successfully.
Note: you don't need a prefab to put something in the scene, a prefab represents an object that has a particular state saved instead of the defaults (transform rotation, materials, colliders, etc.). If you add things to an object and save that object as a prefab then whenever you place that prefab into the scene it will have those components still attached.

Related

Unity deforms every prefab that I create

I have problem with Unity prefabs. Every time I create a nice looking UI in main scene and I want to store it as prefab for later usage if I open this prefab it's deformed(random cliping, moved UI elements in different directions, ... such a mess). If I try to fix this prefab in prefab editor to make it nice looking like before and then if I insert this back to scene it's totally unusable. It creates bigger mess than before in prefab editor... I don't know what to do. Editor throws no errors btw.
In first image is nice looking UI(example already created). In 2nd image is prefab editor. Text is totally out of panel and 3rd is from back in scene (means removed old one UI and place stored prefab from folder) the panel is gone.
Imgur - images are orded by scene to prefab editor and back to scene
On those images you can see a 3 elements... but if I make more complex UI, it's clipping through each other in prefab editor and also back in scene.
Unity version: 2019.1.7f1

Export GameObject Unity to .fbx or .obj

I have built a building in unity, with cubes, etcetera. Now I want to use it as a single object (since using it with so many objects makes it difficult to move it from the scripts). Is it possible to export this to fbx and then have it in assets?
Not as fbx but yes and it's possible to have that item as prefab. If you want to have this building in your assets and use it whenever you want, just put all your shapes in an empty gameobject (to move it via just one container) and drag and drop that gameobject into your project window. Thus you'll have the prefab of that whole building mesh and you could reach it from editor or by script anytime you want.

I still don't understand why is it so hard to copy a simple small prefab from one project to another?

If I just copy the prefab file from folder to folder it won't work.
I will not see the prefab with all the materials textures.
In my original project after made changed to the GameObject in this case a door I dragged it to the Assets and a new prefab created. Now I want to copy and use this prefab in other project/s too.
Screenshot of the prefab in the original project:
Then in my new project after copying the prefab file only 7KB size:
Since it didn't work in the original project I did on the prefab right click and selected Export Package...
If I'm not checking to Include dependencies it will create a package and after importing it in the other new project it will not work again.
But if I check and use the Include dependencies it will make a package of more then 32MB file size with almost everything in my original project not only the door prefab I wanted.
Now it will work fine in the other project but it's crazy that I need to package almost the whole original project just for the door prefab.
In my new project I now so much things that are not connected to the door like scripts prefabs scenes.
And I did right click on the door only. I can't figure out why is it so hard to copy a simple small prefab and use it in another project.
Now in the new project I need to import the package and look in the screenshot the new package contains so much stuff look at the scroll bar on the right how many things it will import. 99.9% not connected in any way to the door prefab:
This is the only way to use the door prefab in another project/s
99.9% not connected in any way to the door prefab
It's wrong, they are relevant.
Scripts
The prefab has user scripts attached, then all the scripts will be included, because if you remove any class, the script may not be successfully compiled.
Models, Materials, Textures, Shaders
It looks like the prefab is created from a model, so all the model files, materials, textures and shaders will be included.
If a model file is a imported model (such as FBX), then the things (generated materials, animations, ...) related to this model will also be included.
Sounds
I see sounds are also in the list, so check your prefab, there may be a AudioSource with it.
So the conclusion is the simple small prefab is not simple in fact.

Why isn't Unity allowing me to apply certain changes to a prefab?

I have a prefab called square in the asset tray, I drag it into the scene to create an instance of the square prefab (in the hierarchy it is highlighted blue and has the select, revert and apply buttons in the properties). If I move/resize the instance and then press apply, the changes are applied to the prefab.
However, the square prefab has a script with a public game object. I drag the game object from the hierarchy into the slot in the instance's properties tab and is shows that the script is now referencing the actual gameobject. However, when I press apply this change isn't applied to the prefab (the prefab's script still isn't referencing any actual gameobject). All other changes to the prefab are applied.
I have tried dragging the instance into the asset tray to create a new prefab with the changes, but, as soon as I do, the script no longer references the game object.
I shouldn't have to create an entirely new prefab every time I add a public variable to a script so why can't I apply this change?
Ok you can't really drag an instance to a prefab. As a rule of thumb keep instances with instances and prefabs with prefabs.
I would instead find the instance from the prefab when this one is instantiated, with a method like findobjectoftype, or gameobject.find. Let me know if you want me to expand the answer
Solved: Prefabs can only reference other prefabs since there might not be an instance. Made the actual gameobject into an instance of a prefab and applied the prefab to the script
Prefabs are Assets. You can reference only other Assets to an Asset, never instances of Assets.

Inspector is disabled in unity

I added a blender file to my assets, and when I click on this file in assets I can't add a component such as SkinnedMeshRenderer to the imported asset as shown in this screenshot. How I can add it?
A SkinnedMeshRenderer is not something you can just add in Unity.
As said in the documentation:
Unity uses the Skinned Mesh Renderer component to render Bone animations, where the shape of the mesh is deformed by predefined animation sequences.
A SkinnedMeshRenderer is automatically added when a skeleton is found in your asset. To have a SkinnedMeshRenderer you must export a skeleton from blender. If you don't have a skeleton, it means that a SkinnedMeshRenderer is not required.
The "Imported Object" is a Unity asset that doesn't accept additional components. Try creating a prefab (right click in Project folder and select Create -> Prefab), give it a unique name, and then drag the "Imported Object" mentioned above, from the Project panel not from the inspector, onto the newly created prefab object in the Project panel. Components can now be added to the prefab. Whenever referencing blender models access them through prefabs in such a way. Prefab copies can be added to the scene by clicking and dragging the prefab into the scene or by using GameObject.Instantiate with scripts.