AssetBundle 구축 후 AddComponent 를 다시 쓰는 C# 는 어떻게 될까요?
AssetBundle이란...?
AssetBundle
에 대한 흔한 오해는 "C#
의Script
도 동적으로 추가할 수 있다"고 했지만 안 된다.왜냐하면 지금은 어느 플랫폼에서
Scripting Backend
를 건설하든지 요구된다IL2CPP
.이는 C#
사전컴파일(AOT)을 C++
로 만들어 구축한 것으로, 이후 동적으로 코드를 추가할 수 없다.[1] ...이렇게 설명하면 허무에 삼킬 가능성이 높다
"
AssetBundle
은 무엇입니까?"이런 분들은 점심시간을 운행할 수 있는 프리패치를 먼저 설명해 드리는 것이 빠르다고 생각합니다.prefab
추가Script
자체는 안 되지만 AddComponent
한 거Script
그대로 따라왔지 그거랑 똑같아.실험
앞말이 길어졌다
"구축
AssetBundle
이후 AddComponentAssetBundle
를 덮어쓴 후 재구성Script
없이 읽기AssetBundle
하면 어떻게 됩니까?"이 보도의 실험이다.
before
준비는 Cube의
Script
만 회전하면 됩니다.MoveCube
using UnityEngine;
public class MoveCube : MonoBehaviour
{
public float Speed = 0f;
private Transform _ts;
private void Start()
{
_ts = this.transform;
}
private void Update()
{
// Speedに従って回転する
_ts.Rotate(Vector3.up, Time.deltaTime * Speed);
}
}
Add cube 3개를 나열합니다AssetBundle
.Inspector에서 Speed까지 각각 40/80/120으로 설정합니다.
이런 느낌
AssetBundle
동적으로 이것을 읽으면 이런 느낌으로 재생된다.before
after
금방 다시 쓸게
Script
.이때 원래 반에서 사용하던 스피드라는 변수는 그대로 사용되고 있다.using UnityEngine;
public class MoveCube : MonoBehaviour
{
public float Speed = 0f;
private Transform _ts;
private void Start()
{
_ts = this.transform;
}
private void Update()
{
- // Speedに従って回転する
- _ts.Rotate(Vector3.up, Time.deltaTime * Speed);
+ // 自分じゃなくて(0,0,0)を中心に回る
+ _ts.RotateAround(Vector3.zero, Vector3.forward, Time.deltaTime * Speed);
}
}
에서 Editor 컴파일링이 완료된 후 천천히 수행합니다.after
위에서 말한 바와 같이
AssetBundle
재건축은 되지 않았지만 개편 항목Script
으로 동작이 바뀌었습니다.Speed 값은 직접 사용됩니다.총결산
알겠습니다.
머릿속은 알겠지만 이 근방의 일을 어떻게 설명해야 할지 고민을 정리하기 위한 실험이다.
운행 시간에 불러올 수 있는 프리패치가 비슷해서 편한데...다음에 이걸로 설명하고 싶어요.
아니야, 아니지?이렇게 말하는'녀석'은'나는''사건'맞죠?
선물 드릴게요!!!!![2]
끝.
참고 자료
각주
Roslyn라Lua라DLL라, 100% 완성할 수 없는 것이 아니라 검은색 마술이다.
'불가능한 게 아니야'와'실제로 해'사이에는 깊은 간극이 있지만 사람은 뛰어내릴 거야...↩︎
본 할아버지에 대한 비판은 이런 사람을 용서하는 것이 아니라 실제로는 잘 모르기 때문에 Asset Bundle을 완전히 이해한 사람에게 모두 버려야 한다!↩︎
Reference
이 문제에 관하여(AssetBundle 구축 후 AddComponent 를 다시 쓰는 C# 는 어떻게 될까요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nekomimi_daimao/articles/c7bf4ee340eb17텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)