Photon(PUN2) 인스턴스를 리소스에서 Prefab으로 변경
입문
안녕하십니까, 저는 한가로운 엔지니어입니다.
운영인터넷 블로그, 이번에는 이 문장의 전재입니다.
Unity 네트워크 라이브러리의 Photon을 사용할 때 자원에서 지정한 접두사 목록으로 Photon의 실례화를 변경하는 방법을 소개하고 싶습니다.
Photon이란 무엇입니까?
PUN 2 – FREE(무료)
Photon PUN 2+(유료)
Photon은 멀티플레이어 게임을 제작할 때 네트워크 부분을 담당하는 네트워크 라이브러리입니다.
예를 들어 몽스터 같은 게임을 만들 때 동시에 하는 4인 화면의 메시지를 동기화해야 하지 않을까요?이럴 때 Photon을 사용하면 네트워크 부분의 번거로운 부분을 통일적으로 책임진다.
사용 방법
Photon 사용 방법
Photon의 사용법은 이번 주제가 아니기 때문에 다른 기사에 양보합니다.
이번에는 Photon을 사용할 때 곤란한 일 중 하나로 실례화할 때 자원에 Prefab를 저장해야 하지만 자신이 정의한 목록에서 생성되도록 변경합니다.
리소스를 Prefab으로 변경하는 방법
일반적으로 Photon은 명중된 객체를 실례화하기 위해 문자열 이름에서 리소스를 검색합니다.
상술한 원본 코드는 Photon의'DefaultPool'에서 정의한 원본 코드입니다. 내용을 간단하게 읽어보면 캐시 자원에서 정의한 Prefab 다음에 요구가 있으면 실례적으로 실현할 수 있습니다.
이번에 나는 이 실현을 내가 만든 Prefab 목록에서 실례화된 실현으로 바꾸고 싶다.
소스 코드
다음 소스 코드를 추가합니다.
MyPhotonPool.csusing System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
public class MyPhotonPool : MonoBehaviourPunCallbacks, IPunPrefabPool
{
public List<GameObject> PrefabList;
public void Start()
{
// Poolの生成イベントを書き換える
PhotonNetwork.PrefabPool = this;
}
public GameObject Instantiate(string prefabId, Vector3 position, Quaternion rotation)
{
foreach (var s in PrefabList)
{
if (s.name == prefabId)
{
var go = Instantiate(s, position, rotation);
go.SetActive(false);
return go;
}
}
return null;
}
public void Destroy(GameObject go)
{
GameObject.Destroy(go);
}
}
사용 방법
풀 정의
적절한 객체에 MyPhotonPool 스크립트를 추가하고 PrefabList에서 Photon을 생성할 Prefab을 지정합니다.
호출자
호출자는 일반적인 실례화 방법에 따라 사용하십시오.// 文字列で指定
PhotonNetwork.Instantiate("BigAsteroid", Vector3.zero, Quaternion.identity, 0);
// Prefabの名前で指定
PhotonNetwork.Instantiate(prefab.name, Vector3.zero, Quaternion.identity, 0);
끝날 때
가능하다면 블로그'Unity+AssetStore 권장 정보에도 많은 기록이 있으니 꼭 참조하세요.
Reference
이 문제에 관하여(Photon(PUN2) 인스턴스를 리소스에서 Prefab으로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kingyo222/items/4bf188747a4cef777ea9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
PUN 2 – FREE(무료)
Photon PUN 2+(유료)
Photon은 멀티플레이어 게임을 제작할 때 네트워크 부분을 담당하는 네트워크 라이브러리입니다.
예를 들어 몽스터 같은 게임을 만들 때 동시에 하는 4인 화면의 메시지를 동기화해야 하지 않을까요?이럴 때 Photon을 사용하면 네트워크 부분의 번거로운 부분을 통일적으로 책임진다.
사용 방법
Photon 사용 방법
Photon의 사용법은 이번 주제가 아니기 때문에 다른 기사에 양보합니다.
이번에는 Photon을 사용할 때 곤란한 일 중 하나로 실례화할 때 자원에 Prefab를 저장해야 하지만 자신이 정의한 목록에서 생성되도록 변경합니다.
리소스를 Prefab으로 변경하는 방법
일반적으로 Photon은 명중된 객체를 실례화하기 위해 문자열 이름에서 리소스를 검색합니다.
상술한 원본 코드는 Photon의'DefaultPool'에서 정의한 원본 코드입니다. 내용을 간단하게 읽어보면 캐시 자원에서 정의한 Prefab 다음에 요구가 있으면 실례적으로 실현할 수 있습니다.
이번에 나는 이 실현을 내가 만든 Prefab 목록에서 실례화된 실현으로 바꾸고 싶다.
소스 코드
다음 소스 코드를 추가합니다.
MyPhotonPool.csusing System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
public class MyPhotonPool : MonoBehaviourPunCallbacks, IPunPrefabPool
{
public List<GameObject> PrefabList;
public void Start()
{
// Poolの生成イベントを書き換える
PhotonNetwork.PrefabPool = this;
}
public GameObject Instantiate(string prefabId, Vector3 position, Quaternion rotation)
{
foreach (var s in PrefabList)
{
if (s.name == prefabId)
{
var go = Instantiate(s, position, rotation);
go.SetActive(false);
return go;
}
}
return null;
}
public void Destroy(GameObject go)
{
GameObject.Destroy(go);
}
}
사용 방법
풀 정의
적절한 객체에 MyPhotonPool 스크립트를 추가하고 PrefabList에서 Photon을 생성할 Prefab을 지정합니다.
호출자
호출자는 일반적인 실례화 방법에 따라 사용하십시오.// 文字列で指定
PhotonNetwork.Instantiate("BigAsteroid", Vector3.zero, Quaternion.identity, 0);
// Prefabの名前で指定
PhotonNetwork.Instantiate(prefab.name, Vector3.zero, Quaternion.identity, 0);
끝날 때
가능하다면 블로그'Unity+AssetStore 권장 정보에도 많은 기록이 있으니 꼭 참조하세요.
Reference
이 문제에 관하여(Photon(PUN2) 인스턴스를 리소스에서 Prefab으로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kingyo222/items/4bf188747a4cef777ea9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
public class MyPhotonPool : MonoBehaviourPunCallbacks, IPunPrefabPool
{
public List<GameObject> PrefabList;
public void Start()
{
// Poolの生成イベントを書き換える
PhotonNetwork.PrefabPool = this;
}
public GameObject Instantiate(string prefabId, Vector3 position, Quaternion rotation)
{
foreach (var s in PrefabList)
{
if (s.name == prefabId)
{
var go = Instantiate(s, position, rotation);
go.SetActive(false);
return go;
}
}
return null;
}
public void Destroy(GameObject go)
{
GameObject.Destroy(go);
}
}
// 文字列で指定
PhotonNetwork.Instantiate("BigAsteroid", Vector3.zero, Quaternion.identity, 0);
// Prefabの名前で指定
PhotonNetwork.Instantiate(prefab.name, Vector3.zero, Quaternion.identity, 0);
가능하다면 블로그'Unity+AssetStore 권장 정보에도 많은 기록이 있으니 꼭 참조하세요.
Reference
이 문제에 관하여(Photon(PUN2) 인스턴스를 리소스에서 Prefab으로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kingyo222/items/4bf188747a4cef777ea9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)