C#中的内联功能块

Jon*_*nny 1 c# unity-game-engine objective-c-blocks dotween

使用Unity的dotween库:http://dotween.demigiant.com/documentation.php

并在C#上生锈...

有没有办法将函数内联指定为.OnComplete的参数,以便我们不必在单独的函数中切断一系列动作?

即我想在ObjC中使用称为块的功能,但在C#中.

啰嗦一种不直观的方式:

void myCallback () {
   // do more stuff here
}
void mysequence() {
    transform.DOMoveX(4, 1).OnComplete(myCallback);
}
Run Code Online (Sandbox Code Playgroud)

我想做的更容易阅读和保持原则:

void mysequence() {
    transform.DOMoveX(4, 1).OnComplete({
        // do more stuff here
    });
}
Run Code Online (Sandbox Code Playgroud)

dem*_*key 6

C#的方式是使用lambdas:

void mysequence() {
    transform.DOMoveX(4, 1).OnComplete(() => {
        // do more stuff here
    });
}
Run Code Online (Sandbox Code Playgroud)

从您链接到的文档:

// Callback without parameters
transform.DOMoveX(4, 1).OnComplete(myCallback);
// Callback with parameters
transform.DOMoveX(4, 1).OnComplete(()=>myCallback(someParam, someOtherParam));
Run Code Online (Sandbox Code Playgroud)


Jea*_*nal 5

您正在寻找C#语句lambda.

void mysequence() {
    transform.DOMoveX(4, 1).OnComplete(() => {
        // do more stuff here
    });
}
Run Code Online (Sandbox Code Playgroud)