Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • 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.

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

Build problem 1 Answer

Reset a SerializedProperty to it's default value. 2 Answers

Custom Inspector - How to add functionality? 1 Answer

Can I add an enum value in the inspector? 4 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