关于游戏中参数导出调整的实现_PlayerPrefs方式实现<21/11/2017>(注意:InputField有坑!PlayerPrefs有默认读取!)
为了方便测试和策划调整手感,往往我们需要导出我们的参数,让他们进行调整可以节省我们一大部分开发的时间
(数据会保存在电脑或手机端本地),参数导出如下图:
一下代码,核心已经注释:<注意!>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SettingManager : MonoBehaviour
{
public GameObject ball;
private Rigidbody2D rg;
public InputField[] inputFields;
public GameObject settingPanel;
void Start()
{
rg = ball.GetComponent<Rigidbody2D>();
rg.mass = PlayerPrefs.GetFloat("Mass", 1f);//GetFloat("Mass",1f)如果读取不到"Mass"值,会默认读取1f数值
inputFields[0].text = rg.mass.ToString();//InputFields.text才是UGUI输入框的入口,此处每次更改后,输入框显示也得随PlayerPrefs数值进行更新
rg.drag = PlayerPrefs.GetFloat("Linear Drag", 0f);
inputFields[1].text = rg.drag.ToString();
rg.angularDrag = PlayerPrefs.GetFloat("Angular Drag", 0.05f);
inputFields[2].text = rg.angularDrag.ToString();
rg.gravityScale = PlayerPrefs.GetFloat("Gravity Scale", 1f);
inputFields[3].text = rg.gravityScale.ToString();
BasketControl.rotateSpeed = PlayerPrefs.GetFloat("Rotate Angular Speed", 1000f);
inputFields[4].text = BasketControl.rotateSpeed.ToString();
BasketControl.ForcePowerRate = PlayerPrefs.GetFloat("Force Power Rate", 55f);
inputFields[5].text = BasketControl.ForcePowerRate.ToString();
DrawLine.parabola = PlayerPrefs.GetFloat("Parabola", 0.026f);
inputFields[6].text = DrawLine.parabola.ToString();
}
public void ActiveSettingPanel()
{
settingPanel.SetActive(true);
BasketControl.FixedAll = false;
}
public void FalseSettingPanel()
{
settingPanel.SetActive(false);
BasketControl.FixedAll = true;
}
public void SettingDate()
{
PlayerPrefs.SetFloat("Mass", float.Parse(inputFields[0].text));
PlayerPrefs.SetFloat("Linear Drag", float.Parse(inputFields[1].text));
PlayerPrefs.SetFloat("Angular Drag", float.Parse(inputFields[2].text));
PlayerPrefs.SetFloat("Gravity Scale", float.Parse(inputFields[3].text));
PlayerPrefs.SetFloat("Rotate Angular Speed", float.Parse(inputFields[4].text));
PlayerPrefs.SetFloat("Force Power Rate", float.Parse(inputFields[5].text));
PlayerPrefs.SetFloat("Parabola", float.Parse(inputFields[6].text));
rg.mass = PlayerPrefs.GetFloat("Mass", float.Parse(inputFields[0].text));
rg.drag = PlayerPrefs.GetFloat("Linear Drag", float.Parse(inputFields[1].text));
rg.angularDrag = PlayerPrefs.GetFloat("Angular Drag", float.Parse(inputFields[2].text));
rg.gravityScale = PlayerPrefs.GetFloat("Gravity Scale", float.Parse(inputFields[3].text));
BasketControl.rotateSpeed = PlayerPrefs.GetFloat("Rotate Angular Speed", float.Parse(inputFields[4].text));
BasketControl.ForcePowerRate = PlayerPrefs.GetFloat("Force Power Rate", float.Parse(inputFields[5].text));
DrawLine.parabola = PlayerPrefs.GetFloat("Parabola", float.Parse(inputFields[6].text));
}
}