Fixed photoshoot script

This commit is contained in:
tonyomendoza 2023-01-22 04:10:22 -08:00
parent 9980dd0497
commit 9fc24ad88a
2 changed files with 3128 additions and 22 deletions

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,6 @@ using UnityEngine.UI;
public class Photoshoot : MonoBehaviour public class Photoshoot : MonoBehaviour
{ {
public string OutputPath; public string OutputPath;
public string itemPrefabPath;
public Camera camera; public Camera camera;
public GameObject items; public GameObject items;
@ -24,12 +23,44 @@ public class Photoshoot : MonoBehaviour
{ {
Debug.LogError("Output Path should not be empty"); Debug.LogError("Output Path should not be empty");
} }
/*if(items != null)
{
SetActiveRecursively(items.transform, true);
}*/
} }
private void OnValidate()
static void SetActiveRecursively(Transform trans, bool active)
{
trans.gameObject.SetActive(active);
if (trans.GetComponent<ItemUI>() != null)
{
return;
}
foreach (Transform child in trans)
{
SetActiveRecursively(child, active);
}
}
static void SetActiveRecursivelyUpward(Transform trans, bool active)
{
trans.gameObject.SetActive(active);
if (trans.parent != null)
{
SetActiveRecursivelyUpward(trans.parent, active);
}
}
private void Start()
{ {
} }
private void OnValidate()
{
SetActiveRecursively(items.transform, false);
}
public void ProcessScreenshots() public void ProcessScreenshots()
{ {
StartCoroutine(Screenshot()); StartCoroutine(Screenshot());
@ -37,7 +68,7 @@ public class Photoshoot : MonoBehaviour
public void ProcessScreenshotsFaster() public void ProcessScreenshotsFaster()
{ {
ScreenshotFaster(); ScreenshotFasterPlus();
} }
private IEnumerator Screenshot() private IEnumerator Screenshot()
@ -143,10 +174,42 @@ public class Photoshoot : MonoBehaviour
} }
Debug.Log($"Screenshot: Complete"); Debug.Log($"Screenshot: Complete");
} }
private void ScreenshotFasterPlus()
{
if (items != null)
{
items.SetActive(true);
SetActiveRecursively(items.transform, true);
}
ItemUI[] itemUIs = items.GetComponentsInChildren<ItemUI>();
if (items != null)
{
SetActiveRecursively(items.transform, false);
items.SetActive(true);
}
Debug.Log($"Screenshot: Found {itemUIs.Length} items.");
for (int i = 0; i < itemUIs.Length; i++)
{
if (items != null)
{
//items.SetActive(true);
}
ItemUI item = itemUIs[i].GetComponentInChildren<ItemUI>();
GameObject obj = item.transform.parent.gameObject; // This assumed ItemUIs are correctly parented.
TakeScreenshotFaster($"{Application.dataPath}/{OutputPath}/{item.itemName}_icon.png", obj);
}
Debug.Log($"Screenshot: Complete");
}
void TakeScreenshotFaster(string fullPath, GameObject obj) void TakeScreenshotFaster(string fullPath, GameObject obj)
{ {
obj.SetActive(true); SetActiveRecursivelyUpward(obj.transform, true);
SetActiveRecursively(obj.transform, true);
RenderTexture rt = new RenderTexture(256, 256, 24); RenderTexture rt = new RenderTexture(256, 256, 24);
camera.targetTexture = rt; camera.targetTexture = rt;
@ -173,7 +236,8 @@ public class Photoshoot : MonoBehaviour
AssetDatabase.Refresh(); AssetDatabase.Refresh();
#endif #endif
obj.SetActive(false); SetActiveRecursively(obj.transform, false);
SetActiveRecursivelyUpward(obj.transform, false);
} }
void TakeScreenshot(string fullPath) void TakeScreenshot(string fullPath)