• 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
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

People who like this

0 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(MyGameObject);



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

  • Sort: 
avatar image
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

People who like this

0 Show 0 · 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

Unity Answers is in Read-Only mode

Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta on June 13. Please note, Unity Answers is now in read-only so we can prepare for the final data migration.

For more information and updates, please read our full announcement thread in the Unity Forum.

Follow this Question

Answers Answers and Comments

605 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

Related Questions

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

How To Draw a PropertyDrawer within a PropertyDrawer 0 Answers

Dynamic changing type in ReorderableList 0 Answers

There is no GameObject attached to this GameObject 2 Answers

Modifying default Inspector GUI creator 3 Answers


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