2014-01-17 3 views
0

다른 사람의 루아 코드를 유지 관리하고 있으며, 루아는 선호하는 언어가 아닙니다.테이블 값에 대한 산술 연산을 시도했습니다.

다음 코드

if !(v.LastHealth == v:Health()) then 
    local newColor = {} 
    newColor.r = v.orgColor.r - (v.orgColor.r - curColor.r) --This is the line the error occurs on 
    newColor.g = v.orgColor.g - (v.orgColor.g * clrPercent) 
    newColor.b = v.orgColor.b - (v.orgColor.b * clrPercent) 
    newColor.a = v.orgColor.a - (v.orgColor.a - curColor.a) 

    v:SetColor(newColor) 

오류를

attempt to perform arithmetic on field 'r' (a table value) 

orgColor을 생산 ... 이것은 아마도 완전한 멍청한 놈 질문,하지만 난 대답 Google 또는 SO를 찾을 수 없습니다 (어쩌면, 전적으로 특정 - v.orgColor 구식 일 수 있습니다) 및 curColor 항목을 테이블에 있습니다 (어쩌면 생각합니다 .bla.x bla [x] Lua 오른쪽 같습니까?) r, g, b 및 a. 분명히 나는 ​​테이블에서 오는 것들에 수학을 할 수 없다? 로컬 변수에이 모든 값을 저장해야합니까? 그건 맞지 않아.

편집 :

인쇄 v.orgColor는 내가이 존재하고 테이블을 의미 가정 table: 0x40390080을 제공합니다. 이상한 점은 v.orgColor.r이 다른 테이블을 제공한다는 것입니다! 그게 원인 같아.

+0

'v.orgColor' 및'curColor' 테이블을 확인하고 실제로'r' 키가 있는지 확인하십시오. 또한 no,'bla.x'와'bla [x]'는 같은 것은 아니지만'bla.x'와'bla.x''가 있습니다. –

+0

@ColonelThirtyTwo 그게 내가 제일 먼저 한 일 이었어? 안그래? 질문을 결과로 업데이트했습니다. – Schilcote

답변

1

v.orgColor는 호스트 프로그램에서 설정 한 것으로 추정되지는 않았지만 코드 샘플의 출처와 동일한 스크립트에 의해 설정되었습니다. 4 개의 RGBA 값을 반환하는 대신 동일한 값의 테이블을 반환하는 함수를 만든 API 변경이있었습니다. 이전 코드는 orgColor.r을 해당 값을 포함하는 테이블로 설정하여 오류를 발생시킵니다.

이야기의 도덕, 나는 당신이 항상 당신이 일하는 변수를 설정하고 있는지 확인해야한다는 것입니다.

관련 문제