मेरे पास निम्न स्क्रिप्ट है:

using UnityEngine;

public class IdleBehavior : StateMachineBehaviour
{
    public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        animator.SetFloat("Counter", Increment(animator.GetFloat("Counter")));
    }

    private float Increment(float time)
    {
        return time += Time.deltaTime;
    }
}

... और बस सोच रहा था कि क्या लैम्ब्डा अभिव्यक्ति का उपयोग करके निम्न पंक्ति को छोटा किया जा सकता है?

animator.SetFloat("Counter", Increment(animator.GetFloat("Counter"))); 

मैंने खुद की कोशिश की, लेकिन अभी त्रुटियों का एक गुच्छा मिला है।

1
Sean Carey 2 मई 2018, 23:12

1 उत्तर

सबसे बढ़िया उत्तर

आपको वास्तव में लैम्ब्डा अभिव्यक्ति की आवश्यकता नहीं है, आप केवल पैरामीटर में ही जोड़ को निष्पादित करते हैं:

animator.SetFloat("Counter", animator.GetFloat("Counter") + Time.deltaTime);

हालाँकि, यदि आप एक लैम्ब्डा एक्सप्रेशन का उपयोग करना चाहते हैं जिसके साथ एक एनिमेटर पैरामीटर में एक मान जोड़ना है, तो आप इसे निम्नानुसार कर सकते हैं:

Action<string,float> addFloatToAnimatorParameter =
    (str, value) => animator.SetFloat(str, animator.GetFloat(str) + value));
addFloatToAnimatorParameter("ParameterName", Time.deltaTime);
3
Galandil 3 मई 2018, 00:59