Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
66 views
in Technique[技术] by (71.8m points)

c# - gameObject Transform in DontDestroyOnLoad

I use the following script to copy the transform of a gameObject.

public Transform alignment;

void Update()
{
    DontDestroyOnLoad(transform.gameObject);

    transform.position = new Vector3(alignment.position.x, alignment.position.y, alignment.position.z);
    float y = alignment.transform.localRotation.eulerAngles.y;
    float x = alignment.transform.localRotation.eulerAngles.x;
    float z = alignment.transform.localRotation.eulerAngles.z;
    transform.localEulerAngles = new Vector3(x, y, z);
}

I want to acces this transform in other scenes (apply it to gameObjects). How can I reach the transforms, that are in DontDestroyOnLoad?

question from:https://stackoverflow.com/questions/65927583/gameobject-transform-in-dontdestroyonload

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

First of all, don't use DontDestroyOnLoad in your update function. Use it in your Start or Awake funciton.

Secondly you can access your Non-Destroyed object like you would any other object. Only differences between the two is that the Non-Destroyed stays in the scene when changing scenes.

Here are some ways to access it:

var obj = GameObject.Find("My Non Destroyed Object Name");

Or my personal favorite, if the object is used for scoring or settings I'll create a new gameobject and add the following script to it:

public class GameManager : MonoDevelop {

    /* These are all script on the same gameobject that is not being destroyed */
    public static Settings settings;
    public static PlayerMananger playerMananger;
    public static UIManager uiManager;
    
    
    void Start() {
        DontDestroyOnLoad(this.gameobject);
        
        // Get the components
        settings = GetComponent<Settings>();
        playerMananger = GetComponent<PlayerMananger>();
        uiManager = GetComponent<UIManager>();
    }   
}

Now I can create a script from anywhere and I can access all these Manager and setting files simply using:

var settings = GameManager.settings;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...