您的位置:首页 > 其它

关于游戏中参数导出调整的实现_PlayerPrefs方式实现

2017-11-21 20:22 295 查看
关于游戏中参数导出调整的实现_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));
}
}


UI面板界面编排如此
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: