forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Revert to prefab (http://forum.boolean.name/showthread.php?t=20226)

daniladiv 12.03.2016 00:31

Revert to prefab
 
Как через скрипт c# сделать revert to prefab (интересует для материалов) выбранного объекта в иерархии проекта (пишу плагин для себя в режиме Editor). Как найти выделенный объект знаю, а как сделать revert to prefab не знаю.

ABTOMAT 12.03.2016 01:51

Ответ: Revert to prefab
 
http://docs.unity3d.com/ScriptRefere...bInstance.html
PrefabUtility.RevertPrefabInstance спасёт отца русской демократии!

daniladiv 12.03.2016 22:15

Ответ: Revert to prefab
 
я так понимаю что он сбрасывает весь ГО а значит удалятся все скрипты и сбросится позиции всех объектов. А мне бы хотелось сбросить материал выделенного объекта в иерархии. Наверно это разработчики не предусмотрели. Не хочется тыкать каждый объект и сбрасывать у него материал, бывают такие ситуации(видимо криво импортится)

ABTOMAT 13.03.2016 02:10

Ответ: Revert to prefab
 
В чём проблема отыскать в иерархии конкретный объект и сбросить только его?

pax 13.03.2016 09:34

Ответ: Revert to prefab
 
Цитата:

Сообщение от ABTOMAT (Сообщение 304795)
В чём проблема отыскать в иерархии конкретный объект и сбросить только его?

Наверное потому, что весь объект с иерархией и есть этот префаб.

seaman 13.03.2016 11:15

Ответ: Revert to prefab
 
Материал не дает ревертить,а вот рендерер - пожалуйста.
Используем это: http://docs.unity3d.com/ScriptRefere...efabState.html
Замечаем,что тип параметра - не GameObject, а Object. Попробуем ему подсунуть рендерер:
PHP код:

using UnityEngine;
using UnityEditor;

public class 
RevertMaterial
{
    [
MenuItem("Examples/Attempt to reset to prefab %r")]
    static 
void Reset()
    {
        
Renderer mat = (Selection.activeGameObject as GameObject).GetComponent<Renderer>();
        if (
mat == null)
        {
            
Debug.LogError("Attempt reset to prefab object withot renderer!" Selection.activeGameObject.name);
            return;
        }
        if (
PrefabUtility.ResetToPrefabState(mat)) Debug.Log("Reseted to prefab state successfully!");
        else 
Debug.LogError("Couldnt reset to a prefab state " Selection.activeGameObject.name);
    }


Работает!

daniladiv 13.03.2016 12:47

Ответ: Revert to prefab
 
seaman спасибо вроде работает)))))


Часовой пояс GMT +4, время: 18:15.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot