コード例 #1
0
    public string GetStackTrace(ResourceRequestInfo req)
    {
        string stacktrace;

        if (!Stacktraces.TryGetValue(req.stacktraceHash, out stacktrace))
        {
            return("");
        }

        return(stacktrace);
    }
コード例 #2
0
    private ResourceRequestInfo NewRequest(string path, StackFrame sf)
    {
        ResourceRequestInfo reqInfo = new ResourceRequestInfo();

        reqInfo.resourcePath = path;
        reqInfo.srcFile      = sf.GetFileName();
        reqInfo.srcLineNum   = sf.GetFileLineNumber();
        reqInfo.seqID        = _reqSeq++;

        string stacktrace = UnityEngine.StackTraceUtility.ExtractStackTrace();

        int _tryCount = 10;

        while (_tryCount > 0)
        {
            string stacktraceStored;
            if (!Stacktraces.TryGetValue(stacktrace.GetHashCode(), out stacktraceStored))
            {
                Stacktraces[stacktrace.GetHashCode()] = stacktrace;
                break;
            }
            else
            {
                if (stacktrace == stacktraceStored)
                {
                    break;
                }
                else
                {
                    // collision happens!
                    stacktrace += ((int)(UnityEngine.Random.value * 100)).ToString();
                }
            }

            _tryCount--;
        }

        reqInfo.stacktraceHash = stacktrace.GetHashCode();
        return(reqInfo);
    }