EmmyLua / VSCode-EmmyLua

Lua IDE/Debugger Plugin for VSCode
632 stars 89 forks source link

type 标注问题 #137

Closed 37wjy closed 4 months ago

37wjy commented 10 months ago
---@class CS
CS = {}
---@class CS.UnityEngine
CS.UnityEngine = {}
---@class CS.UnityEngine.Transform : CS.UnityEngine.Component
---@field position CS.UnityEngine.Vector3
---@field localPosition CS.UnityEngine.Vector3
CS.UnityEngine.Transform = {}
---@overload fun(p : CS.UnityEngine.Transform)
---@param parent CS.UnityEngine.Transform
---@param worldPositionStays boolean
function CS.UnityEngine.Transform:SetParent(parent, worldPositionStays) end

这种提示写法会导致被标注为type是transform的东西setparent无法被提示但position可以, 请问这是设定吗

37wjy commented 10 months ago
---@type CS.UnityEngine.Transform
local CS_UnityEngine_Transform
---@overload fun(p : CS.UnityEngine.Transform)
---@param parent CS.UnityEngine.Transform
---@param worldPositionStays boolean
function CS_UnityEngine_Transform:SetParent(parent, worldPositionStays) end

使用这种方法可以

CppCXY commented 10 months ago

建议直接使用 https://[marketplace.visualstudio.com/items?itemName=CppCXY.emmylua-unity](https://marketplace.visualstudio.com/items?itemName=CppCXY.emmylua-unity)

37wjy commented 10 months ago

好吧, 我之前试过使用, 发现emmylua unity因为环境问题,不是很好推给项目里其他人用. 还有个问题

---@class T
---@field name number
local T = {}

---@type T[]
local a = { 
    {name = "aaa"},
    {name = "abc"}, 
}

---@type T[]
local b = {}
b[1] = {name = "aaa"}
b[2] = {name = "abc"}

当使用第一种写法时无法对list里的结构进行提示, 而第二种就可以, 请问这个后面有考虑支持吗

截屏2023-11-08 下午4 35 49 截屏2023-11-08 下午4 35 58
CppCXY commented 10 months ago

vscode-emmylua现在不会更新语言服务相关的功能了, 多看changelog就知道, 我正在使用C#重新写语言服务. emmylua-unity插件的要求不高就是每个电脑上有个dotnet sdk7, 当然这个插件很多地方做的也并不好, 主要是现在的emmylua本身的问题没法支持更多的特性.

37wjy commented 10 months ago

好的 谢谢, 大佬幸苦了