x


How to create and save a gameobject to a prefab with a script

I want to know how to create an empty prefab and in that prefab put the gameObject. But I dont need the page were you find that I actually know is http://unity3d.com/support/documentation/ScriptReference/EditorUtility.CreateEmptyPrefab.html to create a prefab and http://unity3d.com/support/documentation/ScriptReference/EditorUtility.ReplacePrefab.html to put the gameObject to a prefab but I dont understand it to well so please, someone could write me how to do that in a script.

Thanks for future :)

more ▼

asked Oct 07 '10 at 10:32 PM

user-4347 (google) gravatar image

user-4347 (google)
29 11 11 13

(comments are locked)
10|3000 characters needed characters left

3 answers: sort voted first

Take a look at: How do I programmatically assign a GameObject to a prefab?

There is some code provided there (in C#), so hopefully you can gain an understanding from it.

more ▼

answered Oct 07 '10 at 11:22 PM

Marowi gravatar image

Marowi
4.9k 4 14 53

(comments are locked)
10|3000 characters needed characters left

NOTE: THIS IS IN C#

You could always create one script called "SaveData" or something similar and have this in it

using UnityEngine;
using System;

public class SaveData : MonoBehaviour {

    public void SaveCharacterData() {
        GameObject pc = GameObject.Find("pc");

        PlayerCharacter pcClass = pc.GetComponent<PlayerCharacter>();
        PlayerPrefs.SetString("Player Name", pcClass.Name);

        for(int cnt = 0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++) {
            PlayerPrefs.SetInt(((AttributeName)cnt).ToString() + " - Base Value", pcClass.GetPrimaryAttribute(cnt).BaseValue);
            PlayerPrefs.SetInt(((AttributeName)cnt).ToString() + " - Exp To Level", pcClass.GetPrimaryAttribute(cnt).ExpToLevel);
        }

        for(int cnt = 0; cnt < Enum.GetValues(typeof(VitalName)).Length; cnt++) {
            PlayerPrefs.SetInt(((VitalName)cnt).ToString() + " - Base Value", pcClass.GetVital(cnt).BaseValue);
            PlayerPrefs.SetInt(((VitalName)cnt).ToString() + " - Exp To Level", pcClass.GetVital(cnt).ExpToLevel);
            PlayerPrefs.SetInt(((VitalName)cnt).ToString() + " - Current Value", pcClass.GetVital(cnt).CurValue);

//          PlayerPrefs.SetString(((VitalName)cnt).ToString() + " - Mods", pcClass.GetVital(cnt).GetModifyingAttrituesString());

        }

        for(int cnt = 0; cnt < Enum.GetValues(typeof(SkillName)).Length; cnt++) {
            PlayerPrefs.SetInt(((SkillName)cnt).ToString() + " - Base Value", pcClass.GetSkill(cnt).BaseValue);
            PlayerPrefs.SetInt(((SkillName)cnt).ToString() + " - Exp To Level", pcClass.GetSkill(cnt).ExpToLevel);

//          PlayerPrefs.SetString(((SkillName)cnt).ToString() + " - Mods", pcClass.GetSkill(cnt).GetModifyingAttrituesString());

        }
    }

    public void LoadCharacterData() {
        GameObject pc = GameObject.Find("pc");

        PlayerCharacter pcClass = pc.GetComponent<PlayerCharacter>();
        pcClass.Name = PlayerPrefs.GetString("Player Name", "Name Me");

        for(int cnt = 0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++) {
            pcClass.GetPrimaryAttribute(cnt).BaseValue = PlayerPrefs.GetInt(((AttributeName)cnt).ToString() + " - Base Value", 0);
            pcClass.GetPrimaryAttribute(cnt).ExpToLevel = PlayerPrefs.GetInt(((AttributeName)cnt).ToString() + " - Exp to Level", 0);
        }

        for(int cnt = 0; cnt < Enum.GetValues(typeof(VitalName)).Length; cnt++) {
            pcClass.GetVital(cnt).BaseValue = PlayerPrefs.GetInt(((VitalName)cnt).ToString() + " - Base Value", 0);
            pcClass.GetVital(cnt).ExpToLevel = PlayerPrefs.GetInt(((VitalName)cnt).ToString() + " - Exp to Level", 0);

        //make sure you call this so that the AdjustedBaseValue will be updated before you try to call to get the curValue
        pcClass.GetVital(cnt).Update();

        //get the started value for the curValue for each vital
        pcClass.GetVital(cnt).CurValue = PlayerPrefs.GetInt(((VitalName)cnt).ToString() + " - Cur Value", 1);
        }

        for(int cnt = 0; cnt < Enum.GetValues(typeof(SkillName)).Length; cnt++) {
            pcClass.GetSkill(cnt).BaseValue = PlayerPrefs.GetInt(((SkillName)cnt).ToString() + " - Base Value", 0);
            pcClass.GetSkill(cnt).ExpToLevel = PlayerPrefs.GetInt(((SkillName)cnt).ToString() + " - Exp To Level", 0);      
        }

        //output the curValue for each of the vitals
        for(int cnt = 0; cnt < Enum.GetValues(typeof(SkillName)).Length; cnt++) {
            Debug.Log(((SkillName)cnt).ToString() + ": " + pcClass.GetSkill(cnt).BaseValue + " - " + pcClass.GetSkill(cnt).ExpToLevel);
        }
}
}

I apologize for all the stuff in there those are just what determines my skills/vitals... If you want to learn how to set up those check out the tutorial by BurgZergArcade on youtube...

Im not going to give you a link to his videos for two reasons...

  • It helps to start from the beginning of his tutorials to set this up...
  • You can just go to his channel which is BurgZergArcade.

I apologize if this doesn't help because of all you have to do to get it to work but i tried...

more ▼

answered Oct 25 '10 at 02:10 AM

DoneDesign gravatar image

DoneDesign
15 3 3 7

you will get alot of errors if you don't follow the tutorial but basically all you have to do is have the voids for loading and saving you character and than have the PlayerPrefs.SetInt(((coding...

Oct 25 '10 at 02:23 AM DoneDesign
(comments are locked)
10|3000 characters needed characters left

I don't know if you can do that....

You can create a "base" prefab and append on any extra components needed.

Unity is not good at doing things that it wasn't designed to do...

more ▼

answered Oct 07 '10 at 11:15 PM

stringa gravatar image

stringa
257 37 39 42

You absolutely can create prefabs and assign gameObjects to them via script.

Oct 07 '10 at 11:21 PM Marowi
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x5054
x2073
x1250
x141
x132

asked: Oct 07 '10 at 10:32 PM

Seen: 4139 times

Last Updated: Oct 07 '10 at 10:48 PM