• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by dan_wipf · Jan 21, 2019 at 09:08 AM · c#scripting problemeditorinspectorasset

ReImport in c# of GameObjects only for Scene Objects, not assets?

Hi, i want this to reimport specific GameObjects, in case they're mess-up through manipulation, now I've got this issue now that it only find's the real Path of the Asset, when they're somewhere in the Scene (/Assets/Folder/Folder/GameObject.fbx) , else I've got the Error: Could not find a Part of the Path Exception..

So for a temporary Solution i've checked for scene GameObjects only, but that's not what I really want achieve.


Basically I want to get the full Path from a GameObject, and then reload it via LoadAssetAtPath()


EDIT: Code "Debug Mode" here's the code:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEditor;
 using System.IO;
 [ExecuteInEditMode]
 public class ReImport : MonoBehaviour {
     public bool Re_Import;
     public string realPath;
     public string selectedPath;
     public string correctFile;
     public GameObject Imported;
     // Use this for initialization
     
     // Update is called once per frame
     void Update () {
         if(Re_Import){
             reimp(Imported);
             Re_Import = false;
         }
     }
     void reimp(GameObject go){
             if(go.scene.IsValid()){
                 realPath = Application.dataPath;
                 realPath.Remove(realPath.Length -6);
                 selectedPath = realPath + AssetDatabase.GetAssetPath(go);
                 string[] fileEntries = Directory.GetFiles(selectedPath,"*",SearchOption.AllDirectories);
                 for(int i = 0; i<fileEntries.Length; i++){
                     string file = fileEntries[i];
                     file = file.Replace("\\","/");
                     file = file.Remove(0,realPath.Length);
                     if(file.Contains(PrefabUtility.GetCorrespondingObjectFromSource(go).name) && !file.Contains(".meta")){
                         correctFile = file;
                         // AssetDatabase.ImportAsset("Assets"+file);
                         Debug.Log(" Object was succesfully reimported at: "+"<color=#e0771a><i>"+"Assets"+correctFile+"</i></color>");
                     }
                 }
             }
             else{
                 realPath = Application.dataPath;
                 realPath.Remove(realPath.Length -6);
                 selectedPath = realPath + AssetDatabase.GetAssetPath(go);
                 correctFile = AssetDatabase.GetAssetPath(go);
                 Debug.Log(" Object was succesfully reimported at: "+"<color=#e0771a><i>"+"Assets"+correctFile+"</i></color>");
             }
     }
 }
 


Thanks for any Advice dan

Comment
Add comment · Show 5
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image xxmariofer · Jan 21, 2019 at 09:21 AM 0
Share

I am not sure if this is the problem, but isnt selectedPath the path to one of the specific objects in the directory? shouldnt it be just the path to the directory rather to one specific object?

avatar image dan_wipf xxmariofer · Jan 21, 2019 at 10:21 AM 0
Share

I just don't get it why there's this difference between asset database.getassetpath().

if - A: the asset is in the Scene and the ReImport function is called on Object. and - B: the asset is not in the Scene and the ReImport function is called on the Object


I now did this twice on the same Object. Once I assign the Object from inside the scene and once I assigned it from the AssetFolder => see photo.


I changed the code' a bit: just for debug.(Edited my Question)


From Scene Object from Scene


From Asset Folder Object From Asset Folder


well to sum up, to get the Asset Path for Scene Object's you need to dig in Deep and search every object! and for Asset Path for Objects in the Asset Folder it's enough to call:

 AssetDatabase.GetAssetPath($$anonymous$$yGameObject);



Or is there an easier way for Scene Objects as well, which I'm missing totally?

bildschirmfoto-2019-01-21-um-111727.png (64.0 kB)
bildschirmfoto-2019-01-21-um-111732.png (66.3 kB)
avatar image dan_wipf xxmariofer · Jan 21, 2019 at 10:32 AM 0
Share

@xxmariofer the whole Array string[] fileEntries is in my case 5566 entries, all with the correct path!

avatar image xxmariofer dan_wipf · Jan 21, 2019 at 11:02 AM 0
Share

Can you test using the InstanceID of the object rather than passing the reference to the object ? selectedPath = realPath + AssetDatabase.GetAssetPath(go.GetInstanceID(); I dont really understand that unity behaviour this is the only thing i could think about.

Show more comments

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by dan_wipf · Jan 22, 2019 at 05:18 AM

thank's to @xxmariofer for your wisdom! Finally I' figured out what the Problem was. If you want to know the correct exact Path from a Scene Object you need to get the CorrespondingObjectFromSource first and then cast GetAssetAtPath.

here's the working code for ReImporting either Scene Objects or Assets from a Folder!

         public static void ReImport(this GameObject go){
             string selectedPath;
             if(go.scene.IsValid()){
                 Object realGO = PrefabUtility.GetCorrespondingObjectFromSource(go);
                 selectedPath = AssetDatabase.GetAssetPath(realGO);
                 AssetDatabase.ImportAsset(selectedPath);
                 Debug.Log(" Scene Object was succesfully reimported at: "+"<color=#e0771a><i>"+"Assets"+selectedPath+"</i></color>");
             }else{
                 selectedPath = AssetDatabase.GetAssetPath(go);
                 AssetDatabase.ImportAsset(selectedPath);
                 Debug.Log(" Asset was succesfully reimported at: "+"<color=#e0771a><i>"+"Assets"+selectedPath+"</i></color>");
             }
         }
 

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

606 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Best way to defining scripts within a list inside the editor? 1 Answer

Distribute terrain in zones 3 Answers

Inspector support for .json TextAsset 0 Answers

How do I change the default icon of a .asset file ? 1 Answer

Initialising List array for use in a custom Editor 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges