标签:sqli value getc 其他 add dbn cli life was
写在前面:项目的关卡功能和数据库基础实现是小组其他成员实现的部分,这里作为学习总结。关卡功能块使用C#语言编写脚本,在Unity3D游戏引擎的环境中实现,数据库功能块使用PHP作为服务端获取MySQL中的数据。
按键决定碰撞盒的触发 | 碰撞消除物体增减值 |
按钮实现的场景切换 |
一、碰撞盒 |
if (按下J键) {
背景图片切换到changeSprite01
} {
星星的碰撞盒被触发tempCo.isTrigger = true,鸟和鸭子的碰撞盒不被触发
} else if (按下K键) {
背景图片切换到changeSprite02
} {
鸟的碰撞盒被触发,星星和鸭子的碰撞盒不被触发
} else if (按下L键) {
背景图片切换到changeSprite03
} {
鸭子的碰撞盒被触发,鸟和星星的碰撞盒不被触发
}
//关键代码片段 star.cs
using UnityEngine;
using System.Collections;
public class star : MonoBehaviour {
private Collider[] starColliders;
void Start () {
starColliders = GetComponents<Collider>();
}
void Update () {
if (Input.GetKeyDown(KeyCode.K))
{
foreach (Collider tempCo in starColliders)
{
tempCo.isTrigger = true;
}
}
else if (Input.GetKeyDown(KeyCode.J))
{
foreach (Collider tempCo in starColliders)
{
tempCo.isTrigger = false;
}
}
}
}
二、增减值 |
DontDestroyOnLoad(transform.gameObject) 物体不可摧毁,加在人物上,人物死亡后销毁人物。
kills 每杀一只动物,玩家的生命值和杀戮值都上升一点。当生命值掉到0点的时候,玩家死亡。
canvas Canvas成为人物的子物体,与人物一样不可摧毁。从第一关开始携带的分数,只要人物不死亡就能一直携带到结局。
if (碰到的物体tag为animal) {
销毁animal物体,生命值+1和杀戮值+1
} else if (碰到的物体tag为Dead) {
生命值-1
if (生命值= 0) {
跳转到dead场景 销毁人物
}
} if (杀戮值=0) {
跳转到好结局;
} else if (杀戮值=1或者杀戮值=2) {
跳转到正常结局 ;
} else if (杀戮值= 3) {
跳转到坏结局;
}
//关键代码片段 kills.cs → OnCollisionEnter
private void OnCollisionEnter(Collision mCollider)
{
//如果碰到的是动物,则动物消失,数目加1;
if (mCollider.gameObject.tag == "animal")
{
Destroy(mCollider.gameObject);
//Add one to the current value of our count variable.
count = count + 1;
count01 = count01 + 1;
//Update the currently displayed count by calling the SetCountText function.
SetCountText();
}
else if (mCollider.gameObject.tag == "Dead")
{
count01 = count01 - 1;
SetCountText();
if (count01 == 0)
{
Application.LoadLevel("dead");
Destroy(gameObject);
}
}
else if (mCollider.gameObject.tag == "tree")
{
Destroy(gameObject);
if (count == 0)
{
Application.LoadLevel("gd");
}
else if (count == 1 || count==2)
{
Application.LoadLevel("ne");
}
else if (count == 3)
{
Application.LoadLevel("be");
}
}
}
void SetCountText()
{
countText.text = "杀戮值: " + count.ToString();
countText01.text = "生命值: " + count01.ToString();
}
public void CreateScores(string id,int count,int count01){
WWWForm form = new WWWForm ();
form.AddField ("idPost", id);
form.AddField ("scorePost", count);
form.AddField ("lifePost", count01);
WWW www = new WWW (CreateScoresURL,form);
}
void Awake()
{
DontDestroyOnLoad(transform.gameObject);
}
}
三、场景 |
public void Click_test() 点击按钮,切换游戏场景
Application.LoadLevel("dead") 切换场景代码
public void点击按钮{
Application.LoadLevel(切换到另一场景);
}
Private void OnCollisionEnter(Collision collision) {
if(碰到了tag为Player的物体) {
Application.LoadLevel(“vi切换到另一场景");
}
}
//关键代码片段 OnCollisionEnter
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Player")
{
Debug.Log("dead");
changeSpriteRenderer.sprite = changeSprite;
Destroy(gameObject, lifeTime);
}
}
四、Unity连接数据库 |
//关键代码片段 InsertUser.php
<?php
$servername ="localhost";
$server_username ="root";
$server_password = "";
$dbName = "game";
$id = $_POST["idPost"];
$password = $_POST["passwordPost"];
//$score = $_POST["scorePost"];
//$life = $_POST["lifePost"];
//$schedule = $_POST["schedulePost"];
$conn = new mysqli($servername,$server_username,$server_password,$dbName);
if(!$conn){
die("Connection Failed." . mysqli_connect_error());
}
$sql = "INSERT INTO gamer (id , password)
VALUES(‘".$id."‘, ‘".$password."‘)";
$result = mysqli_query($conn,$sql);
if(!result) echo "there was an error";
else echo"Everything ok.";
?>
五、获取Unity中的信息 |
在cs文件中,先用string CreateUserURL = “localhost/数据库名/.php文件” 获取本地数据库位置。
用CreateUser(string ,sring) 函数获取unity中,想要传输到数据库的信息。
通过unity中内置的 WWWForm 类 和 WWW类,运用 WWWform.AddField (String,String) 方法 通过post的表单提交方式把表单参数传递给服务器端的逻辑业务层。
在每次数据更新后,记录键盘输入的信息,将它们传送给CreateUser函数。
//关键代码片段 dl.cs → CreateUser
public void CreateUser(string id,string password){
WWWForm form = new WWWForm ();
form.AddField ("idPost", id);
form.AddField ("passwordPost", password);
WWW www = new WWW (CreateUserURL,form);
}
版权声明:非本人允许不得转载
标签:sqli value getc 其他 add dbn cli life was
原文地址:http://www.cnblogs.com/ljq66/p/7777223.html