17일차: 풍선에서 학습한 State(다중 환경의 변수 동기화)
6798 단어 가상 배우VirtualCastVCI
이번 내용
저번에 만든 풍선 버튼이 이번에 변경되어 여러 사람이 사용해도 속도가 유지됩니다.
이번에 배운 기술은 다음과 같다.
• State를 통한 변수 공유
State 요약
지난번에 몇 사람이 버튼을 눌렀을 때 속도 정보가 유지되지 않은 것은 각자 속도 정보가 있기 때문이다.
따라서 전체 인원이 속도 정보를 가지고 그것을 참조, 변경하면 속도 정보를 유지할 수 있다.
V 캐스트는 전원 공동으로 변수를 사용하는'스테이트'기능이 있기 때문에 그것을 사용한다.자세한 내용은 아래 공식 페이지를 보십시오
・State 요약
State에는 다음 세 가지 함수만 있습니다.
Set (name,value):name라는 이름으로value를 저장합니다.
・Get(name):name 이름으로 저장된 값 가져오기
·Add(name,value):name 이름으로 저장된 값에 value 추가
value에서도 문자열을 설정할 수 있지만 Add는 숫자를 저장할 때만 사용할 수 있습니다.
코드 생성
State 수정 코드를 사용하면 다음과 같습니다.
속도 변경 섹션-- 初期化処理。あとから入ってきた人に上書きされないように、VCIを出した人のみ実行するようにする。
if vci.assets.IsMine then
vci.state.Set("BalloonSpeed",0)
end
function onUse(use)
if use == "Button_Balloon_Up" then
vci.state.Add("BalloonSpeed",1)
end
if use == "Button_Balloon_Down" then
vci.state.Add("BalloonSpeed",-1)
end
end
풍선의 위치를 바꾸는 부분
State의 초기화 처리가 반영되기 전에 업데이트 All이라고 할 수 있습니다. 이 경우 vci입니다.state.Get이 nil로 돌아갑니다.
그래서 닐은 처리하지 않습니다.function updateAll()
local balloon = vci.assets.GetTransform("HotAirBalloon")
--バルーンの所有権を持っていたら
if balloon.IsMine then
local BalloonSpeed = vci.state.Get("BalloonSpeed")
--ちゃんと値が設定されているときのみ実行する。
if BalloonSpeed ~= nil then
local nextPos = balloon.GetPosition()+Vector3.up*BalloonSpeed*0.01
--移動先の座標が地中(y<0)ならy=0にする。(地中に埋まらないようにする処理)
if nextPos.y < 0 then
nextPos.y = 0
BalloonSpeed = 0
end
balloon.SetPosition(nextPos)
end
end
end
완성
State 고려 사항
State는 설정 후 바로 반영되지 않습니다.
따라서 다음과 같이 같은 프레임 내에서 설정하고 참조해도 설정된 값을 가져올 수 없습니다.
코드-- 初期化処理。あとから入ってきた人に上書きされないように、VCIを出した人のみ実行するようにする。
count = 0
function updateAll()
print("設定値:"..count)
vci.state.Set("Count",count )
--ここでGetしてもSetした値が取得できない。
print("参照値:"..vci.state.Get("Count"))
count = count + 1
end
결과(State와 무관한 내용이 설정되었으니 무시하십시오)
끝맺다
어때요?
State는 편리하지만 수치를 반영하기 전에 약간의 지연이 있을 수 있으니 주의해서 사용하세요.
다음 내용은 미정이다.
Reference
이 문제에 관하여(17일차: 풍선에서 학습한 State(다중 환경의 변수 동기화)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lightjug/items/f26713f1415cf5793352
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
지난번에 몇 사람이 버튼을 눌렀을 때 속도 정보가 유지되지 않은 것은 각자 속도 정보가 있기 때문이다.
따라서 전체 인원이 속도 정보를 가지고 그것을 참조, 변경하면 속도 정보를 유지할 수 있다.
V 캐스트는 전원 공동으로 변수를 사용하는'스테이트'기능이 있기 때문에 그것을 사용한다.자세한 내용은 아래 공식 페이지를 보십시오
・State 요약
State에는 다음 세 가지 함수만 있습니다.
Set (name,value):name라는 이름으로value를 저장합니다.
・Get(name):name 이름으로 저장된 값 가져오기
·Add(name,value):name 이름으로 저장된 값에 value 추가
value에서도 문자열을 설정할 수 있지만 Add는 숫자를 저장할 때만 사용할 수 있습니다.
코드 생성
State 수정 코드를 사용하면 다음과 같습니다.
속도 변경 섹션-- 初期化処理。あとから入ってきた人に上書きされないように、VCIを出した人のみ実行するようにする。
if vci.assets.IsMine then
vci.state.Set("BalloonSpeed",0)
end
function onUse(use)
if use == "Button_Balloon_Up" then
vci.state.Add("BalloonSpeed",1)
end
if use == "Button_Balloon_Down" then
vci.state.Add("BalloonSpeed",-1)
end
end
풍선의 위치를 바꾸는 부분
State의 초기화 처리가 반영되기 전에 업데이트 All이라고 할 수 있습니다. 이 경우 vci입니다.state.Get이 nil로 돌아갑니다.
그래서 닐은 처리하지 않습니다.function updateAll()
local balloon = vci.assets.GetTransform("HotAirBalloon")
--バルーンの所有権を持っていたら
if balloon.IsMine then
local BalloonSpeed = vci.state.Get("BalloonSpeed")
--ちゃんと値が設定されているときのみ実行する。
if BalloonSpeed ~= nil then
local nextPos = balloon.GetPosition()+Vector3.up*BalloonSpeed*0.01
--移動先の座標が地中(y<0)ならy=0にする。(地中に埋まらないようにする処理)
if nextPos.y < 0 then
nextPos.y = 0
BalloonSpeed = 0
end
balloon.SetPosition(nextPos)
end
end
end
완성
State 고려 사항
State는 설정 후 바로 반영되지 않습니다.
따라서 다음과 같이 같은 프레임 내에서 설정하고 참조해도 설정된 값을 가져올 수 없습니다.
코드-- 初期化処理。あとから入ってきた人に上書きされないように、VCIを出した人のみ実行するようにする。
count = 0
function updateAll()
print("設定値:"..count)
vci.state.Set("Count",count )
--ここでGetしてもSetした値が取得できない。
print("参照値:"..vci.state.Get("Count"))
count = count + 1
end
결과(State와 무관한 내용이 설정되었으니 무시하십시오)
끝맺다
어때요?
State는 편리하지만 수치를 반영하기 전에 약간의 지연이 있을 수 있으니 주의해서 사용하세요.
다음 내용은 미정이다.
Reference
이 문제에 관하여(17일차: 풍선에서 학습한 State(다중 환경의 변수 동기화)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lightjug/items/f26713f1415cf5793352
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
-- 初期化処理。あとから入ってきた人に上書きされないように、VCIを出した人のみ実行するようにする。
if vci.assets.IsMine then
vci.state.Set("BalloonSpeed",0)
end
function onUse(use)
if use == "Button_Balloon_Up" then
vci.state.Add("BalloonSpeed",1)
end
if use == "Button_Balloon_Down" then
vci.state.Add("BalloonSpeed",-1)
end
end
function updateAll()
local balloon = vci.assets.GetTransform("HotAirBalloon")
--バルーンの所有権を持っていたら
if balloon.IsMine then
local BalloonSpeed = vci.state.Get("BalloonSpeed")
--ちゃんと値が設定されているときのみ実行する。
if BalloonSpeed ~= nil then
local nextPos = balloon.GetPosition()+Vector3.up*BalloonSpeed*0.01
--移動先の座標が地中(y<0)ならy=0にする。(地中に埋まらないようにする処理)
if nextPos.y < 0 then
nextPos.y = 0
BalloonSpeed = 0
end
balloon.SetPosition(nextPos)
end
end
end
State는 설정 후 바로 반영되지 않습니다.
따라서 다음과 같이 같은 프레임 내에서 설정하고 참조해도 설정된 값을 가져올 수 없습니다.
코드
-- 初期化処理。あとから入ってきた人に上書きされないように、VCIを出した人のみ実行するようにする。
count = 0
function updateAll()
print("設定値:"..count)
vci.state.Set("Count",count )
--ここでGetしてもSetした値が取得できない。
print("参照値:"..vci.state.Get("Count"))
count = count + 1
end
결과(State와 무관한 내용이 설정되었으니 무시하십시오)끝맺다
어때요?
State는 편리하지만 수치를 반영하기 전에 약간의 지연이 있을 수 있으니 주의해서 사용하세요.
다음 내용은 미정이다.
Reference
이 문제에 관하여(17일차: 풍선에서 학습한 State(다중 환경의 변수 동기화)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lightjug/items/f26713f1415cf5793352
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(17일차: 풍선에서 학습한 State(다중 환경의 변수 동기화)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lightjug/items/f26713f1415cf5793352텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)