[Unity 3D]랭킹 구현(MySQL, Photon Network)
2020. 7. 28. 22:14ㆍ[Unity] 게임 개발
반응형
오늘은 개발중이던 게임의 랭킹 시스템을 구현해보았다
PHP문
<?php
$host = ""; //보안위해 정보는 가리겠습니다.
$user = "";
$pass = "";
$dbName = "";
$Id = $_POST["IdPost"];
$connect = mysqli_connect($host,$user,$pass,$dbName);
if(!$connect)
{
die("Connection Failed.". mysqli_connect_error());
}
$checksql = "SELECT * FROM Login Where (Id) = ('".$Id."')";
$sql="SELECT (Id), (Victory), (Defeat)
,@RANKT := IF(@LAST > (Victory), @RANK := @RANK + 1, @RANK) AS RANKING
,@LAST := (Victory)
FROM Login, (SELECT @RANK := 0) XX
ORDER BY (Victory) DESC";
$sql3result = mysqli_query($connect, $sql);
$RANK =0;
$LastVictory =0;
while($result_row = mysqli_fetch_assoc($sql3result))
{
if($result_row['Victory']!=$LastVictory)
{
$RANK++;
}
echo ','.$result_row['Id'].','.$result_row['Victory'].','.($RANK).','."\n";
$LastVictory = $result_row['Victory'];
}
?>
Unity 와 무료호스팅 서버DB와 PHP문을 통해 랭킹시스템을 구현하였다
작성한 PHP문은 호스팅 서버가 5.7.30 - MySQL Community Server (GPL) 버전이라
우선 Rank()함수는 호환이 안되는 상태였다.
때문에 Login 테이블에 Victory칼럼의 수를 비교하여 Rank를(중복시 같은 랭킹 나오게) 구해주었다
Unity C#문
IEnumerator RankingUpdate(string ID)
{
WWWForm form = new WWWForm();
form.AddField("IdPost", ID);
WWW www = new WWW(RankingURL, form);
yield return www;
Rank = www.text.Split(',');
Debug.Log(PhotonNetwork.LocalPlayer.NickName);
for (int i = 0; i < Rank.Length; i++)
{
if (Rank[i] == PhotonNetwork.LocalPlayer.NickName)
{
MyRank = Rank[i + 2];
}
}
PhotonNetwork.LocalPlayer.CustomProperties.Remove(PlayerInformation.PLAYER_RANKING);
PhotonNetwork.LocalPlayer.CustomProperties.Add(PlayerInformation.PLAYER_RANKING, MyRank);
PhotonNetwork.LocalPlayer.SetCustomProperties(PhotonNetwork.LocalPlayer.CustomProperties);
Debug.Log("내 랭킹은"+MyRank);
Debug.Log("www.text :" + www.text);
}
그 후 유니티 내에서 POST방식 연동, 코루틴 문에서 DB가 보내주는 www.text를 ',' 문자를 기준으로 split하여,
i = 계정이름 , i+2 = Ranking의 형식을 완성하여 PhontonNetWork의 닉네임과 동일한 계정이름의 Ranking을 도출해내었다.
코루틴 문은 게임이 종료되는 시점에서 호출.
결과 화면
이제 게임의 결과신에서 Kill/Death 정보와 Ranking까지 출력되는 것을 확인할 수 있다.
반응형
'[Unity] 게임 개발' 카테고리의 다른 글
[Unity] iTween Move 함수 사용 (0) | 2020.08.13 |
---|---|
[Unity]Camera View 조절 (0) | 2020.08.10 |
[Unity 2D] Camera View 내 적 감지 (0) | 2020.07.26 |
[Unity 2D] 피격시 카메라 흔들리기 (1) | 2020.07.26 |
[Unity 3D] 포스트 방식 디비 연동 (0) | 2020.07.22 |