-- slua对struct做了分离处理:对于Vector2,3,4,Color,Quantion等, -- 比如把一个Vector2从c#传到lua,lua会生成一个Vector2类型的table存它并使用, -- 把一个table传到c#,如果它是Vector2类型的,c#会生成一个Vector2存其数据,即slua通过数据拷贝来处理这类struct -- 对于其他struct,slua当做ud来处理 for i=0,self.maxdo local cube = GameObject.CreatePrimitive(PrimitiveType.Cube) cube.transform.position = Vector3(math.cos(i/self.max*pi*2)*self.r,math.sin( i/self.max*pi*2)*self.r,0) cube.transform:SetParent(self.root.transform) local mat=cube:GetComponent(Renderer).material
local box=cube:GetComponent(BoxCollider) GameObject.Destroy(box)
local p = GameObject.Instantiate(P,Vector3.zero,Quaternion.identity) p.transform:SetParent( cube.transform )
mat.color=self.colors[math.random(#self.colors)] table.insert(self.cubes,{cube,mat}) end end
functionclass:update()-- gc alloc is zero
for i,v inipairs(self.cubes) do local offset = i%2==1and5or-5 local r = self.r+math.sin(Time.time)*offset local angle= i%2==1and Time.timeor -Time.time local base=Vector3(math.cos(i/self.max*pi*2+angle)*r, math.sin(i/self.max*pi*2+angle)*r,0)
v[1].transform.position = base --v[2].color=self.colors[math.random(#self.colors)] end
ifnot self.fogStart or self.t>1then self.fogStart=Time.time self.bgCurrent = Camera.main.backgroundColor self.bgColor=self.colors[math.random(#self.colors)] end
--calc fps self.f=self.f+1 self.framet=self.framet+Time.deltaTime if self.framet>=1then self.ftext.text=string.format("fps:%d",self.f) self.f=0 self.framet=self.framet-1 end end