Итак, я создавал простую игру, и одна из вещей, которую я хотел, заключалась в том, чтобы вы могли выбирать скин во время игры, и это работало, но только в редакторе, поскольку я не знал, что его создание будет сделать так, чтобы функция больше не работала/вы просто не могли (немного глупо, когда я об этом думаю, но на самом деле не думал об этом).
Поэтому я хотел знать, если был способ сделать так, чтобы эта функция могла работать (поскольку я видел, как кто-то сказал, что они просто добавили файл редактора, но они никогда особо не объясняли, и это было расплывчато, так что я не знаю) или способ переработать ее, чтобы не использовать редактор.< /p>
Вот код для выбора игрока и персонажа игрока (я новичок в этом, поэтому код, вероятно, очень неуклюжий и неэффективный, заранее извините)
Выбор скина
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class skinManager : MonoBehaviour
{
public SpriteRenderer sr;
public SpriteRenderer sLeft;
public SpriteRenderer sLeftD;
public SpriteRenderer sDown;
public SpriteRenderer sRightD;
public SpriteRenderer sRight;
public SpriteRenderer sRightU;
public SpriteRenderer sUp;
public SpriteRenderer sLeftU;
public List skins = new List();
public List left = new List();
public List leftD = new List();
public List down = new List();
public List rightD = new List();
public List right = new List();
public List rightU = new List();
public List up = new List();
public List leftU = new List();
private int selectedSkin = 0;
private int selLeft = 0;
private int selLeftD = 0;
private int selDown = 0;
private int selRightD = 0;
private int selRight = 0;
private int selRightU = 0;
private int selUp = 0;
private int selLeftU = 0;
public GameObject playerSkin;
public GameObject playerLeft;
public GameObject playerLeftD;
public GameObject playerDown;
public GameObject playerRightD;
public GameObject playerRight;
public GameObject playerRightU;
public GameObject playerUp;
public GameObject playerLeftU;
public void NextOption()
{
selectedSkin = selectedSkin + 1;
selLeft = selLeft + 1;
selLeftD = selLeftD + 1;
selDown = selDown + 1;
selRightD = selRightD + 1;
selRight = selRight + 1;
selRightU = selRightU + 1;
selUp = selUp + 1;
selLeftU = selLeftU + 1;
if(selectedSkin == skins.Count)
{
selectedSkin = 0;
selLeft = 0;
selLeftD = 0;
selDown = 0;
selRightD = 0;
selRight = 0;
selRightU = 0;
selUp = 0;
selLeftU = 0;
}
sr.sprite = skins[selectedSkin];
sLeft.sprite = left[selectedSkin];
sLeftD.sprite = leftD[selectedSkin];
sDown.sprite = down[selectedSkin];
sRightD.sprite = rightD[selectedSkin];
sRight.sprite = right[selectedSkin];
sRightU.sprite = rightU[selectedSkin];
sUp.sprite = up[selectedSkin];
sLeftU.sprite = leftU[selectedSkin];
}
public void BackOption()
{
selectedSkin = selectedSkin - 1;
selLeft = selLeft - 1;
selLeftD = selLeftD - 1;
selDown = selDown - 1;
selRightD = selRightD - 1;
selRight = selRight - 1;
selRightU = selRightU - 1;
selUp = selUp - 1;
selLeftU = selLeftU - 1;
if(selectedSkin < 0)
{
selectedSkin = skins.Count - 1;
selLeft = left.Count - 1;
selLeftD = leftD.Count - 1;
selDown = down.Count - 1;
selRightD = rightD.Count - 1;
selRight = right.Count - 1;
selRightU = rightU.Count - 1;
selUp = up.Count - 1;
selLeftU = leftU.Count - 1;
}
sr.sprite = skins[selectedSkin];
sLeft.sprite = left[selectedSkin];
sLeftD.sprite = leftD[selectedSkin];
sDown.sprite = down[selectedSkin];
sRightD.sprite = rightD[selectedSkin];
sRight.sprite = right[selectedSkin];
sRightU.sprite = rightU[selectedSkin];
sUp.sprite = up[selectedSkin];
sLeftU.sprite = leftU[selectedSkin];
}
public void Select()
{
PrefabUtility.SaveAsPrefabAsset(playerSkin, "Assets/selectedskin.prefab");
PrefabUtility.SaveAsPrefabAsset(playerLeft, "Assets/selLeft.prefab");
PrefabUtility.SaveAsPrefabAsset(playerLeftD, "Assets/selLeftD.prefab");
PrefabUtility.SaveAsPrefabAsset(playerDown, "Assets/selDown.prefab");
PrefabUtility.SaveAsPrefabAsset(playerRightD, "Assets/selRightD.prefab");
PrefabUtility.SaveAsPrefabAsset(playerRight, "Assets/selRight.prefab");
PrefabUtility.SaveAsPrefabAsset(playerRightU, "Assets/selRightU.prefab");
PrefabUtility.SaveAsPrefabAsset(playerUp, "Assets/selUp.prefab");
PrefabUtility.SaveAsPrefabAsset(playerLeftU, "Assets/selLeftU.prefab");
}
}
Управление игроком
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class movement : MonoBehaviour
{
public bool gameStarted = false;
private bool noReset = false;
public GameObject selectedskin;
public GameObject selLeft;
public GameObject selLeftD;
public GameObject selLeftU;
public GameObject selRight;
public GameObject selRightD;
public GameObject selRightU;
public GameObject selDown;
public GameObject selUp;
private Sprite left;
private Sprite right;
private Sprite down;
private Sprite up;
private Sprite leftDown;
private Sprite rightDown;
private Sprite leftUp;
private Sprite rightUp;
private Sprite stare;
private int sceneID = 0;
void Start()
{
stare = selectedskin.GetComponent().sprite;
left = selLeft.GetComponent().sprite;
right = selRight.GetComponent().sprite;
down = selDown.GetComponent().sprite;
up = selUp.GetComponent().sprite;
leftDown = selLeftD.GetComponent().sprite;
rightDown = selRightD.GetComponent().sprite;
leftUp = selLeftU.GetComponent().sprite;
rightUp = selRightU.GetComponent().sprite;
}
void Update()
{
if (gameStarted)
{
float moveX = 0f;
float moveY = 0f;
float moveSpeed = 6f;
if(Input.GetKey(KeyCode.W))
{
moveY = +1f;
gameObject.GetComponent().sprite=up;
}
if(Input.GetKey(KeyCode.UpArrow))
{
moveY = +1f;
gameObject.GetComponent().sprite=up;
}
if(Input.GetKey(KeyCode.A))
{
moveX = -1f;
gameObject.GetComponent().sprite=left;
}
if(Input.GetKey(KeyCode.LeftArrow))
{
moveX = -1;
gameObject.GetComponent().sprite=left;
}
if(Input.GetKey(KeyCode.S))
{
moveY = -1f;
gameObject.GetComponent().sprite=down;
}
if(Input.GetKey(KeyCode.DownArrow))
{
moveY = -1f;
gameObject.GetComponent().sprite=down;
}
if(Input.GetKey(KeyCode.D))
{
moveX = +1f;
gameObject.GetComponent().sprite=right;
}
if(Input.GetKey(KeyCode.RightArrow))
{
moveX = +1f;
gameObject.GetComponent().sprite=right;
}
if(Input.GetKey(KeyCode.W)&&Input.GetKey(KeyCode.A))
{gameObject.GetComponent().sprite=leftUp;}
if(Input.GetKey(KeyCode.W)&&Input.GetKey(KeyCode.D))
{gameObject.GetComponent().sprite=rightUp;}
if(Input.GetKey(KeyCode.UpArrow)&&Input.GetKey(KeyCode.LeftArrow))
{gameObject.GetComponent().sprite=leftUp;}
if(Input.GetKey(KeyCode.UpArrow)&&Input.GetKey(KeyCode.RightArrow))
{gameObject.GetComponent().sprite=rightUp;}
if(Input.GetKey(KeyCode.S)&&Input.GetKey(KeyCode.A))
{gameObject.GetComponent().sprite=leftDown;}
if(Input.GetKey(KeyCode.S)&&Input.GetKey(KeyCode.D))
{gameObject.GetComponent().sprite=rightDown;}
if(Input.GetKey(KeyCode.DownArrow)&&Input.GetKey(KeyCode.LeftArrow))
{gameObject.GetComponent().sprite=leftDown;}
if(Input.GetKey(KeyCode.DownArrow)&&Input.GetKey(KeyCode.RightArrow))
{gameObject.GetComponent().sprite=rightDown;}
if(!Input.GetKey(KeyCode.W)&&!Input.GetKey(KeyCode.A)&&!Input.GetKey(KeyCode.S)&&!Input.GetKey(KeyCode.D)&&!Input.GetKey(KeyCode.UpArrow)&&!Input.GetKey(KeyCode.LeftArrow)&&!Input.GetKey(KeyCode.DownArrow)&&!Input.GetKey(KeyCode.RightArrow))
{gameObject.GetComponent().sprite=stare;}
Vector3 moveDir = new Vector3(moveX, moveY).normalized;
transform.position += moveDir * moveSpeed * Time.deltaTime;
}
if (Input.GetKeyDown(KeyCode.Space) && !noReset)
{
GameStart();
}
if (Input.GetKeyDown(KeyCode.R) && noReset && !gameStarted)
{
RestartScene();
}
if (Input.GetKeyDown(KeyCode.Escape))
{
HomeScreen();
}
}
public void HomeScreen()
{
SceneManager.LoadScene(sceneID);
}
void GameStart()
{
gameStarted = true;
noReset = true;
}
void GameEnd()
{
gameStarted = false;
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.gameObject.CompareTag("enemy"))
{
GameEnd();
}
}
public void RestartScene()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... refabasset
Как заменить/исправить PrefabUtility.SaveAsPrefabAsset? ⇐ C#
Место общения программистов C#
-
Anonymous
1728403851
Anonymous
Итак, я создавал простую игру, и одна из вещей, которую я хотел, заключалась в том, чтобы вы могли выбирать скин во время игры, и это работало, но только в редакторе, поскольку я не знал, что его создание будет сделать так, чтобы функция больше не работала/вы просто не могли (немного глупо, когда я об этом думаю, но на самом деле не думал об этом).
Поэтому я хотел знать, если был способ сделать так, чтобы эта функция могла работать (поскольку я видел, как кто-то сказал, что они просто добавили файл редактора, но они никогда особо не объясняли, и это было расплывчато, так что я не знаю) или способ переработать ее, чтобы не использовать редактор.< /p>
Вот код для выбора игрока и персонажа игрока (я новичок в этом, поэтому код, вероятно, очень неуклюжий и неэффективный, заранее извините)
Выбор скина
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class skinManager : MonoBehaviour
{
public SpriteRenderer sr;
public SpriteRenderer sLeft;
public SpriteRenderer sLeftD;
public SpriteRenderer sDown;
public SpriteRenderer sRightD;
public SpriteRenderer sRight;
public SpriteRenderer sRightU;
public SpriteRenderer sUp;
public SpriteRenderer sLeftU;
public List skins = new List();
public List left = new List();
public List leftD = new List();
public List down = new List();
public List rightD = new List();
public List right = new List();
public List rightU = new List();
public List up = new List();
public List leftU = new List();
private int selectedSkin = 0;
private int selLeft = 0;
private int selLeftD = 0;
private int selDown = 0;
private int selRightD = 0;
private int selRight = 0;
private int selRightU = 0;
private int selUp = 0;
private int selLeftU = 0;
public GameObject playerSkin;
public GameObject playerLeft;
public GameObject playerLeftD;
public GameObject playerDown;
public GameObject playerRightD;
public GameObject playerRight;
public GameObject playerRightU;
public GameObject playerUp;
public GameObject playerLeftU;
public void NextOption()
{
selectedSkin = selectedSkin + 1;
selLeft = selLeft + 1;
selLeftD = selLeftD + 1;
selDown = selDown + 1;
selRightD = selRightD + 1;
selRight = selRight + 1;
selRightU = selRightU + 1;
selUp = selUp + 1;
selLeftU = selLeftU + 1;
if(selectedSkin == skins.Count)
{
selectedSkin = 0;
selLeft = 0;
selLeftD = 0;
selDown = 0;
selRightD = 0;
selRight = 0;
selRightU = 0;
selUp = 0;
selLeftU = 0;
}
sr.sprite = skins[selectedSkin];
sLeft.sprite = left[selectedSkin];
sLeftD.sprite = leftD[selectedSkin];
sDown.sprite = down[selectedSkin];
sRightD.sprite = rightD[selectedSkin];
sRight.sprite = right[selectedSkin];
sRightU.sprite = rightU[selectedSkin];
sUp.sprite = up[selectedSkin];
sLeftU.sprite = leftU[selectedSkin];
}
public void BackOption()
{
selectedSkin = selectedSkin - 1;
selLeft = selLeft - 1;
selLeftD = selLeftD - 1;
selDown = selDown - 1;
selRightD = selRightD - 1;
selRight = selRight - 1;
selRightU = selRightU - 1;
selUp = selUp - 1;
selLeftU = selLeftU - 1;
if(selectedSkin < 0)
{
selectedSkin = skins.Count - 1;
selLeft = left.Count - 1;
selLeftD = leftD.Count - 1;
selDown = down.Count - 1;
selRightD = rightD.Count - 1;
selRight = right.Count - 1;
selRightU = rightU.Count - 1;
selUp = up.Count - 1;
selLeftU = leftU.Count - 1;
}
sr.sprite = skins[selectedSkin];
sLeft.sprite = left[selectedSkin];
sLeftD.sprite = leftD[selectedSkin];
sDown.sprite = down[selectedSkin];
sRightD.sprite = rightD[selectedSkin];
sRight.sprite = right[selectedSkin];
sRightU.sprite = rightU[selectedSkin];
sUp.sprite = up[selectedSkin];
sLeftU.sprite = leftU[selectedSkin];
}
public void Select()
{
PrefabUtility.SaveAsPrefabAsset(playerSkin, "Assets/selectedskin.prefab");
PrefabUtility.SaveAsPrefabAsset(playerLeft, "Assets/selLeft.prefab");
PrefabUtility.SaveAsPrefabAsset(playerLeftD, "Assets/selLeftD.prefab");
PrefabUtility.SaveAsPrefabAsset(playerDown, "Assets/selDown.prefab");
PrefabUtility.SaveAsPrefabAsset(playerRightD, "Assets/selRightD.prefab");
PrefabUtility.SaveAsPrefabAsset(playerRight, "Assets/selRight.prefab");
PrefabUtility.SaveAsPrefabAsset(playerRightU, "Assets/selRightU.prefab");
PrefabUtility.SaveAsPrefabAsset(playerUp, "Assets/selUp.prefab");
PrefabUtility.SaveAsPrefabAsset(playerLeftU, "Assets/selLeftU.prefab");
}
}
Управление игроком
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class movement : MonoBehaviour
{
public bool gameStarted = false;
private bool noReset = false;
public GameObject selectedskin;
public GameObject selLeft;
public GameObject selLeftD;
public GameObject selLeftU;
public GameObject selRight;
public GameObject selRightD;
public GameObject selRightU;
public GameObject selDown;
public GameObject selUp;
private Sprite left;
private Sprite right;
private Sprite down;
private Sprite up;
private Sprite leftDown;
private Sprite rightDown;
private Sprite leftUp;
private Sprite rightUp;
private Sprite stare;
private int sceneID = 0;
void Start()
{
stare = selectedskin.GetComponent().sprite;
left = selLeft.GetComponent().sprite;
right = selRight.GetComponent().sprite;
down = selDown.GetComponent().sprite;
up = selUp.GetComponent().sprite;
leftDown = selLeftD.GetComponent().sprite;
rightDown = selRightD.GetComponent().sprite;
leftUp = selLeftU.GetComponent().sprite;
rightUp = selRightU.GetComponent().sprite;
}
void Update()
{
if (gameStarted)
{
float moveX = 0f;
float moveY = 0f;
float moveSpeed = 6f;
if(Input.GetKey(KeyCode.W))
{
moveY = +1f;
gameObject.GetComponent().sprite=up;
}
if(Input.GetKey(KeyCode.UpArrow))
{
moveY = +1f;
gameObject.GetComponent().sprite=up;
}
if(Input.GetKey(KeyCode.A))
{
moveX = -1f;
gameObject.GetComponent().sprite=left;
}
if(Input.GetKey(KeyCode.LeftArrow))
{
moveX = -1;
gameObject.GetComponent().sprite=left;
}
if(Input.GetKey(KeyCode.S))
{
moveY = -1f;
gameObject.GetComponent().sprite=down;
}
if(Input.GetKey(KeyCode.DownArrow))
{
moveY = -1f;
gameObject.GetComponent().sprite=down;
}
if(Input.GetKey(KeyCode.D))
{
moveX = +1f;
gameObject.GetComponent().sprite=right;
}
if(Input.GetKey(KeyCode.RightArrow))
{
moveX = +1f;
gameObject.GetComponent().sprite=right;
}
if(Input.GetKey(KeyCode.W)&&Input.GetKey(KeyCode.A))
{gameObject.GetComponent().sprite=leftUp;}
if(Input.GetKey(KeyCode.W)&&Input.GetKey(KeyCode.D))
{gameObject.GetComponent().sprite=rightUp;}
if(Input.GetKey(KeyCode.UpArrow)&&Input.GetKey(KeyCode.LeftArrow))
{gameObject.GetComponent().sprite=leftUp;}
if(Input.GetKey(KeyCode.UpArrow)&&Input.GetKey(KeyCode.RightArrow))
{gameObject.GetComponent().sprite=rightUp;}
if(Input.GetKey(KeyCode.S)&&Input.GetKey(KeyCode.A))
{gameObject.GetComponent().sprite=leftDown;}
if(Input.GetKey(KeyCode.S)&&Input.GetKey(KeyCode.D))
{gameObject.GetComponent().sprite=rightDown;}
if(Input.GetKey(KeyCode.DownArrow)&&Input.GetKey(KeyCode.LeftArrow))
{gameObject.GetComponent().sprite=leftDown;}
if(Input.GetKey(KeyCode.DownArrow)&&Input.GetKey(KeyCode.RightArrow))
{gameObject.GetComponent().sprite=rightDown;}
if(!Input.GetKey(KeyCode.W)&&!Input.GetKey(KeyCode.A)&&!Input.GetKey(KeyCode.S)&&!Input.GetKey(KeyCode.D)&&!Input.GetKey(KeyCode.UpArrow)&&!Input.GetKey(KeyCode.LeftArrow)&&!Input.GetKey(KeyCode.DownArrow)&&!Input.GetKey(KeyCode.RightArrow))
{gameObject.GetComponent().sprite=stare;}
Vector3 moveDir = new Vector3(moveX, moveY).normalized;
transform.position += moveDir * moveSpeed * Time.deltaTime;
}
if (Input.GetKeyDown(KeyCode.Space) && !noReset)
{
GameStart();
}
if (Input.GetKeyDown(KeyCode.R) && noReset && !gameStarted)
{
RestartScene();
}
if (Input.GetKeyDown(KeyCode.Escape))
{
HomeScreen();
}
}
public void HomeScreen()
{
SceneManager.LoadScene(sceneID);
}
void GameStart()
{
gameStarted = true;
noReset = true;
}
void GameEnd()
{
gameStarted = false;
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.gameObject.CompareTag("enemy"))
{
GameEnd();
}
}
public void RestartScene()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79066875/how-to-replace-fix-prefabutility-saveasprefabasset[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия