AssetBundle 구축 후 AddComponent 를 다시 쓰는 C# 는 어떻게 될까요?

8789 단어 C#Unitytech

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]
끝.

참고 자료


https://docs.unity3d.com/ja/2021.2/Manual/ScriptingRestrictions.html
https://qiita.com/4_mio_11/items/d5d7b4e879a8341595cd
각주
RoslynLuaDLL라, 100% 완성할 수 없는 것이 아니라 검은색 마술이다.
'불가능한 게 아니야'와'실제로 해'사이에는 깊은 간극이 있지만 사람은 뛰어내릴 거야...↩︎
본 할아버지에 대한 비판은 이런 사람을 용서하는 것이 아니라 실제로는 잘 모르기 때문에 Asset Bundle을 완전히 이해한 사람에게 모두 버려야 한다!↩︎

좋은 웹페이지 즐겨찾기